Introduktion till Bash-skriptning
Alex Scriven
Data Scientist
En grundläggande IF-sats i Bash har följande struktur:
if [ CONDITION ]; then# SOME CODEelse # SOME OTHER CODEfi
Två tips:
];Vi kan göra en enkel strängjämförelse i en IF-sats:
x="Queen"if [ $x == "King" ]; thenecho "$x is a King!"else echo "$x is not a King!" fi
Queen is not a King!
Du kan också använda != för 'inte lika med'
Aritmetiska IF-satser kan använda strukturen med dubbla parenteser:
x=10if (($x > 5)); then echo "$x is more than 5!" fi
10 is more than 5!
Aritmetiska IF-satser kan också använda hakparenteser med en aritmetisk flagga i stället för (>, <, =, != osv.):
-eq för 'lika med'-ne för 'inte lika med'-lt för 'mindre än'-le för 'mindre än eller lika med'-gt för 'större än'-ge för 'större än eller lika med'Här återskapar vi det förra exemplet med hakparentesnotation:
x=10
if [ $x -gt 5 ]; then
echo "$x is more than 5!"
fi
10 is more than 5!
Bash har också en rad filrelaterade flaggor, till exempel:
-e om filen finns-s om filen finns och har en storlek större än noll-r om filen finns och är läsbar-w om filen finns och är skrivbarOch flera andra:
För att kombinera villkor (AND) eller använda en OR-sats i Bash används följande symboler:
&& för AND|| för ORI Bash kan du antingen kedja villkor på följande sätt:
x=10
if [ $x -gt 5 ] && [ $x -lt 11 ]; then
echo "$x is more than 5 and less than 11!"
fi
Eller använda notation med dubbla hakparenteser:
x=10
if [[ $x -gt 5 && $x -lt 11 ]]; then
echo "$x is more than 5 and less than 11!"
fi
Du kan också använda många kommandoradsprogram direkt i villkoret, utan hakparenteser.
Till exempel, om filen words.txt innehåller 'Hello World!':
if grep -q Hello words.txt; then
echo "Hello is inside!"
fi
Hello is inside!
Du kan också använda ett skal-inom-skal i ditt villkor.
Låt oss skriva om det förra exemplet – resultatet blir detsamma.
if $(grep -q Hello words.txt); then
echo "Hello is inside!"
fi
Hello is inside!
Introduktion till Bash-skriptning