[bash] problem z przycieciem zmiennej
|
shibby |
Dodano 14-02-2010 16:15
|
SysOp
Posty: 17108
Dołączył: 15/01/2009 20:30
|
mam przykładowa zmienna
TEST="aa.a.part"
jak ją pozbawic rozszerzenia .part?
mecze sie i skonczyly mi sie juz pomysly :/
Proxmox VE: i5-13400T, 64GB RAM, 2x 512GB NVMe, 3x 2TB SSD, Intel X710-DA2 SFP+
VM Router: OpenWRT 22.03.4
VM NAS: Synology SA6400
VM VPS: Debian, WWW, Home Assistant
Switch: Netgear MS510TXPP
Switch: Ubiquiti USW-Flex-mini - szt. 2
Wi-Fi: Ubiquiti U6-Lite - szt. 2
|
|
|
|
arteq |
Dodano 14-02-2010 16:33
|
VIP
Posty: 1918
Dołączył: 04/03/2006 17:42
|
#!/bin/sh
TEST="aa.a.part"
echo $TEST | cut -b-4
Edytowany przez arteq dnia 14-02-2010 16:44
Pozdrawiam, Artur
http://digi-led.pl Elementy elektroniczne | urz?dzenia sieciowe | us?ugi informatyczne
http://openwrt.pl - Polskie Centrum OpenWrt
o p e n (your) r o u t e r . p l
|
|
|
|
obsy |
Dodano 14-02-2010 16:40
|
VIP
Posty: 5775
Dołączył: 31/10/2006 20:06
|
basename $TEST .part
|
|
|
|
shibby |
Dodano 14-02-2010 16:41
|
SysOp
Posty: 17108
Dołączył: 15/01/2009 20:30
|
to zwroci mi .part a ja potrzebuje aa.a
ponatdo raz bede mial abcd.part
innym razem a.b.c.d.part
potrzebuje by mi zwracal zmienna pozwawiona rozrzerzenia part, bo tylko rozszerzenie bedzie zawsze takie samo.
czyli abcd, a.b.c.d itd
Edytowany przez shibby dnia 14-02-2010 16:42
Proxmox VE: i5-13400T, 64GB RAM, 2x 512GB NVMe, 3x 2TB SSD, Intel X710-DA2 SFP+
VM Router: OpenWRT 22.03.4
VM NAS: Synology SA6400
VM VPS: Debian, WWW, Home Assistant
Switch: Netgear MS510TXPP
Switch: Ubiquiti USW-Flex-mini - szt. 2
Wi-Fi: Ubiquiti U6-Lite - szt. 2
|
|
|
|
shibby |
Dodano 14-02-2010 16:45
|
SysOp
Posty: 17108
Dołączył: 15/01/2009 20:30
|
Cytat obsy napisał/a:
basename $TEST .part
o oto wlasnie chodzi tyle ze tomato nie ma polecenia basename
Proxmox VE: i5-13400T, 64GB RAM, 2x 512GB NVMe, 3x 2TB SSD, Intel X710-DA2 SFP+
VM Router: OpenWRT 22.03.4
VM NAS: Synology SA6400
VM VPS: Debian, WWW, Home Assistant
Switch: Netgear MS510TXPP
Switch: Ubiquiti USW-Flex-mini - szt. 2
Wi-Fi: Ubiquiti U6-Lite - szt. 2
|
|
|
|
arteq |
Dodano 14-02-2010 16:45
|
VIP
Posty: 1918
Dołączył: 04/03/2006 17:42
|
odcinasz 5 ostatnich znaków :-)
Pozdrawiam, Artur
http://digi-led.pl Elementy elektroniczne | urz?dzenia sieciowe | us?ugi informatyczne
http://openwrt.pl - Polskie Centrum OpenWrt
o p e n (your) r o u t e r . p l
|
|
|
|
shibby |
Dodano 14-02-2010 16:49
|
SysOp
Posty: 17108
Dołączył: 15/01/2009 20:30
|
arteq no wlasnie tylko jak ro zrobic.
sposob obsego dziala idealnie tylko w tomato nie ma polecenia basename :/
Proxmox VE: i5-13400T, 64GB RAM, 2x 512GB NVMe, 3x 2TB SSD, Intel X710-DA2 SFP+
VM Router: OpenWRT 22.03.4
VM NAS: Synology SA6400
VM VPS: Debian, WWW, Home Assistant
Switch: Netgear MS510TXPP
Switch: Ubiquiti USW-Flex-mini - szt. 2
Wi-Fi: Ubiquiti U6-Lite - szt. 2
|
|
|
|
obsy |
Dodano 14-02-2010 16:49
|
VIP
Posty: 5775
Dołączył: 31/10/2006 20:06
|
Cytat shibby napisał/a:
Cytat obsy napisał/a:
basename $TEST .part
o oto wlasnie chodzi tyle ze tomato nie ma polecenia basename
Oooo, no co za pech
|
|
|
|
shibby |
Dodano 14-02-2010 16:53
|
SysOp
Posty: 17108
Dołączył: 15/01/2009 20:30
|
udalo sie
echo $TEST |sed -e s/".part"//g
Proxmox VE: i5-13400T, 64GB RAM, 2x 512GB NVMe, 3x 2TB SSD, Intel X710-DA2 SFP+
VM Router: OpenWRT 22.03.4
VM NAS: Synology SA6400
VM VPS: Debian, WWW, Home Assistant
Switch: Netgear MS510TXPP
Switch: Ubiquiti USW-Flex-mini - szt. 2
Wi-Fi: Ubiquiti U6-Lite - szt. 2
|
|
|
|
jejek |
Dodano 15-02-2010 09:15
|
User
Posty: 59
Dołączył: 25/01/2009 14:56
|
Chyba źle to robisz. Usuwasz wszystkie wystąpienia .part a chcesz tylko ostatnie.
Jeśli nie możesz sobie dokompilować basename (jest w busyboxie, ale OpenWRT chyba standardowo go nie ma, w Tomato nie wiem), to przynajmniej obcinają tę końcówkę jak radzą koledzy.
echo ${TEST:0:${#TEST}-5}
Wyjaśnienie dlaczego akurat tak:http://leksykot.top.hell.pl/tech/bash...ash_string |
|
|
|
obsy |
Dodano 15-02-2010 09:27
|
VIP
Posty: 5775
Dołączył: 31/10/2006 20:06
|
Problem tylko w tym że to pomysły basha i pewnie pół z tego nie działała na ash. A instalowanie bash specjalnie dlatego że użyć danego rozwiązania mija się z celem, ponadto jest mało uniwersalne i przenaszalne.
Chociaż oczywiście działa (jak ktoś ma basha)
|
|
|
|
jejek |
Dodano 15-02-2010 09:37
|
User
Posty: 59
Dołączył: 25/01/2009 14:56
|
Ale cały temat jest przecież o bashu. Od tytułu poczynając. |
|
|
|
shibby |
Dodano 15-02-2010 09:46
|
SysOp
Posty: 17108
Dołączył: 15/01/2009 20:30
|
a ile ten bash zajmuje mnie wlasnie denerwuja takie rzeczy ze w bashu cos mi dziala bez zajakniecia a w jakims ashu, dashu, sr**u juz nie. Dlatego basha zawsze sobie doinstalowuje od reki.
Rozwiazanie z sed dziala idealnie. Fakt ale regulka usuwa wszystkie wystapienia .part ale sytuacja w ktore ".part" byloby w srodku nazwy nigdy sie nie zdarzy.
Proxmox VE: i5-13400T, 64GB RAM, 2x 512GB NVMe, 3x 2TB SSD, Intel X710-DA2 SFP+
VM Router: OpenWRT 22.03.4
VM NAS: Synology SA6400
VM VPS: Debian, WWW, Home Assistant
Switch: Netgear MS510TXPP
Switch: Ubiquiti USW-Flex-mini - szt. 2
Wi-Fi: Ubiquiti U6-Lite - szt. 2
|
|
|
|
obsy |
Dodano 15-02-2010 10:06
|
VIP
Posty: 5775
Dołączył: 31/10/2006 20:06
|
no to zrób
echo $TEST |sed -e 's/.part$//g'
Będzie tylko końcówki wycinał.
|
|
|
|
jejek |
Dodano 15-02-2010 10:38
|
User
Posty: 59
Dołączył: 25/01/2009 14:56
|
Słusznie. I to "g" sobie daruj, bo ono oznacza "global" o ile pamiętam. Więc w przypadku wycinania jednego fragmentu jest niepotrzebne. A przed kropką daj backslasha bo kropka oznacza dowolny znak.
echo $TEST |sed -e 's/\.part$//'
Edytowany przez jejek dnia 15-02-2010 10:42
|
|
|
|
shibby |
Dodano 15-02-2010 10:51
|
SysOp
Posty: 17108
Dołączył: 15/01/2009 20:30
|
thx, teraz dziala wszystko cacy
Proxmox VE: i5-13400T, 64GB RAM, 2x 512GB NVMe, 3x 2TB SSD, Intel X710-DA2 SFP+
VM Router: OpenWRT 22.03.4
VM NAS: Synology SA6400
VM VPS: Debian, WWW, Home Assistant
Switch: Netgear MS510TXPP
Switch: Ubiquiti USW-Flex-mini - szt. 2
Wi-Fi: Ubiquiti U6-Lite - szt. 2
|
|
|