Bash 脚本入门
Alex Scriven
Data Scientist
Bash 中基本的 IF 语句结构如下:
if [ CONDITION ]; then# SOME CODEelse # SOME OTHER CODEfi
两点提示:
];我们可以在 IF 语句中进行基本的字符串比较:
x="Queen"if [ $x == "King" ]; thenecho "$x is a King!"else echo "$x is not a King!" fi
Queen is not a King!
也可以使用 != 表示"不等于"
算术 IF 语句可使用双圆括号结构:
x=10if (($x > 5)); then echo "$x is more than 5!" fi
10 is more than 5!
算术 IF 也可用方括号配合算术标志(而非 >, <, =, != 等):
-eq 等于-ne 不等于-lt 小于-le 小于等于-gt 大于-ge 大于等于这里用方括号重写上例:
x=10
if [ $x -gt 5 ]; then
echo "$x is more than 5!"
fi
10 is more than 5!
Bash 还提供多种与文件相关的标志,例如:
-e 文件存在-s 文件存在且大小大于 0-r 文件存在且可读-w 文件存在且可写以及更多:
在 Bash 中组合条件(AND)或使用 OR,使用以下符号:
&& 表示 AND|| 表示 OR在 Bash 中可以如下串联条件:
x=10
if [ $x -gt 5 ] && [ $x -lt 11 ]; then
echo "$x is more than 5 and less than 11!"
fi
或使用双中括号写法:
x=10
if [[ $x -gt 5 && $x -lt 11 ]]; then
echo "$x is more than 5 and less than 11!"
fi
您也可以在条件中直接使用许多命令行程序,去掉方括号。
例如,若文件 words.txt 内含"Hello World!":
if grep -q Hello words.txt; then
echo "Hello is inside!"
fi
Hello is inside!
也可以在条件中调用"嵌套 shell"。
让我们改写上例,结果相同:
if $(grep -q Hello words.txt); then
echo "Hello is inside!"
fi
Hello is inside!
Bash 脚本入门