首页 代码 正文

Shell编程中的控制语句

2024.5.16 代码 171

中括号

中括号有两种使用方法:
用于比较操作符:比较两个值大小或者判断两个值是否相等。例如:

  • -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”字符串返回
  1. 转载请保留原文链接:Shell编程中的控制语句 https://aboss.top/post/745/
  2. 本站所有资源文章出自互联网收集整理,本站不参与制作,如果侵犯了您的合法权益,请联系本站我们会及时删除。
  3. 本站发布资源来源于互联网,可能存在水印或者引流等信息,请用户擦亮眼睛自行鉴别,做一个有主见和判断力的用户。
  4. 本站资源仅供研究、学习交流之用,若使用商业用途,请购买正版授权,否则产生的一切后果将由下载用户自行承担。
  5. 联系方式(#替换成@):mail#aboss.top

评论

热门搜索