Hvad er forskellen på (( )) og [[ ]] i bash?
-
- Admin
- Indlæg: 3650
- Tilmeldt: 5. mar 2010, 19:58
- IRC nickname: nicky
- Geografisk sted: 192.168.20.42
Hvad er forskellen på (( )) og [[ ]] i bash?
Jeg sidder og konstruerer en if, som skal opnå true på to parametre før koden må køres.
I manualen til bash (http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_07_02.html) nævnes 2 måder det kan gøres på:
EDIT, jeg har lige rettet linien til noget som virker efter hensigten.
For mig er det kun
som virker, dvs at jeg kan ikke bruge [ ] i linien, og så vidt jeg kan se, så forklarer manualen ikke forskellen.
Jeg få en fejl fra grep, som siger
hvis jeg bruger [ ].
Hvad er forskellen?
Er det den 'rigtige' måde som jeg gør det på, eller er der en bedre måde at evaluere flere parametre på?
I manualen til bash (http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_07_02.html) nævnes 2 måder det kan gøres på:
Kode: Vælg alt
[ EXPR1 -a EXPR2 ] og (( EXPR1 )) || (( EXPR2 ))
EDIT, jeg har lige rettet linien til noget som virker efter hensigten.
For mig er det kun
Kode: Vælg alt
if (( cat /proc/mounts | grep '/media/dc-do' > /dev/null )) && (( test -e /media/dc-do/testfile ));
Jeg få en fejl fra grep, som siger
Kode: Vælg alt
grep: ]: Ingen sådan fil eller filkatalog
Hvad er forskellen?
Er det den 'rigtige' måde som jeg gør det på, eller er der en bedre måde at evaluere flere parametre på?
-
- Admin
- Indlæg: 3650
- Tilmeldt: 5. mar 2010, 19:58
- IRC nickname: nicky
- Geografisk sted: 192.168.20.42
Re: Hvad er forskellen på (( )) og [[ ]] i bash?
For helhedens skyld, kan jeg lige inkludere hvad jeg forstiller mig det endelige resultat bliver:
Kode: Vælg alt
if (( cat /proc/mounts | grep '/media/dc-do' > /dev/null )) && (( test -e /media/dc-do/testfile ));
then
echo "Backup-drev fundet i mounts og testfile tilstede"
(køre backup her)
elif (( sudo mount /media/dc-ba)) || (( test -e /media/dc-do/testfile ));
(køre backup her)
then
echo "Backup-drev og / eller testfile ikke tilstede, afslutter."
exit 1
fi
exit 0
-
- Admin
- Indlæg: 3650
- Tilmeldt: 5. mar 2010, 19:58
- IRC nickname: nicky
- Geografisk sted: 192.168.20.42
Re: Hvad er forskellen på (( )) og [[ ]] i bash?
TitanusEramius skrev:EDIT, jeg har lige rettet linien til noget som virker efter hensigten.
For mig er det kunsom virker, dvs at jeg kan ikke bruge [ ] i linien, og så vidt jeg kan se, så forklarer manualen ikke forskellen.Kode: Vælg alt
if (( cat /proc/mounts | grep '/media/dc-do' > /dev/null )) && (( test -e /media/dc-do/testfile ));
Eller ikke. Efter at jeg kørte nogle flere tests idag, får jeg stadig fejl på den linie. Så ligemeget hvad jeg gør, eller hvilket et af rådene fra manualen som jeg følger, så kan jeg ikke få 'if' til at evaluere to parametre...
Nu har jeg oprettet en tråd hos Ars Technica, og så håber jeg at mysteriet om bash'es modvilje kan blive løst
Hvem er online
Brugere der læser dette forum: [Bot] og 0 gæster