共计 1113 个字符,预计需要花费 3 分钟才能阅读完成。
中括号
中括号有两种使用方法:
用于比较操作符:比较两个值大小或者判断两个值是否相等。例如:
-eq
:判断两个值是否相等(equal to),例如[$a -eq $b]
-ne
:判断两个值是否不相等(not equal to),例如[$a -ne $b]
-lt
:判断左边的值是否小于右边的值(less than),例如[$a -lt $b]
-gt
:判断左边的值是否大于右边的值(greater than),例如[$a -gt $b]
-le
:判断左边的值是否小于等于右边的值(less than or equal to),例如[$a -le $b]
-ge
:判断左边的值是否大于等于右边的值(greater than or equal to),例如[$a -ge $b]
用于测试表达式:测试某个表达式是否成立。例如:
-f
:判断某个文件是否存在并且是一个常规文件(regular file),例如[-f file.txt]
-d
:判断某个文件是否存在并且是一个目录(directory),例如[-d dir]
-z
:判断某个字符串是否为空(zero length),例如[-z "$str"]
-n
:判断某个字符串是否非空(not zero length),例如[-n "$str"]
-e
:判断某个文件或目录是否存在(exist),例如[-e file.txt]
在多数 Linux 发行版中,测试表达式可以用中括号 [] 或者 test 命令实现,例如:test -f file.txt
等价于[-f file.txt]
。
需要注意,中括号中的空格很重要,空格缺少会导致语法错误。另外,在使用中括号 [] 时,要注意变量用双引号括起来,避免空值引起语法错误。
if 语句
#!/bin/bash
if [-f file.txt]; then
echo "file.txt exists."
elif [-d dir]; then
echo "dir exists."
else
echo "file.txt and dir not found."
fi
循环语句
for 循环
#!/bin/bash
for i in 1 2 3 4 5; do
echo "The value of i is: $i"
done
while 循环
#!/bin/bash
j=0
while [$j -lt 5]; do
echo "The value of j is: $j"
j=$((j + 1))
done
注意:在 Shell 中,变量类型默认为字符串,所以在进行算术操作时需要使用 $((…))算术扩展运算符来确保正确的结果。$(…)运算符会将结果直接返回,例如:
- $((j+1)),如果 j 是 5,结果就会返回 6(注意,使用这个运算符的时候,括号里面不能有空格)
- $(echo “hello world”),会将 ”hello world” 打印,然后再将 ”hello world” 字符串返回
正文完