陈光钦上海钦刻 发表于 2023-12-10 17:00:52

Linux-03shell语法3

判断语句

if…then形式


[*]类似于C/C++中的if-else语句。
单层if


[*]命令格式:
if condition
then
    语句1
    语句2
    ...
fi

[*]示例:
a=3
b=4

if [ "$a" -lt "$b" ] && [ "$a" -gt 2 ]
then
    echo ${a}在范围内
fi

[*]输出结果:
3在范围内单层if-else


[*]命令格式
if condition
then
    语句1
    语句2
    ...
else
    语句1
    语句2
    ...
fi

[*]示例:
a=3
b=4

if ! [ "$a" -lt "$b" ]
then
    echo ${a}不小于${b}
else
    echo ${a}小于${b}
fi

[*]输出结果:
3小于4多层if-elif-elif-else


[*]命令格式
if condition
then
    语句1
    语句2
    ...
elif condition
then
    语句1
    语句2
    ...
elif condition
then
    语句1
    语句2
else
    语句1
    语句2
    ...
fi

[*]示例:
a=4

if [ $a -eq 1 ]
then
    echo ${a}等于1
elif [ $a -eq 2 ]
then
    echo ${a}等于2
elif [ $a -eq 3 ]
then
    echo ${a}等于3
else
    echo 其他
fi

[*]输出结果:
其他case…esac形式


[*]类似于C/C++中的switch语句。
[*]命令格式
case $变量名称 in
    值1)
      语句1
      语句2
      ...
      ;;# 类似于C/C++中的break
    值2)
      语句1
      语句2
      ...
      ;;
    *)# 类似于C/C++中的default
      语句1
      语句2
      ...
      ;;
esac

[*]示例:
a=4

case $a in
    1)
      echo ${a}等于1
      ;;
    2)
      echo ${a}等于2
      ;;
    3)
      echo ${a}等于3
      ;;
    *)
      echo 其他
      ;;
esac

[*]输出结果:
其他循环语句

for…in…do…done


[*]命令格式:
for var in val1 val2 val3
do
    语句1
    语句2
    ...
done

[*]示例1,输出a 2 cc,每个元素一行:
for i in a 2 cc
do
    echo $i
done

[*]示例2,输出当前路径下的所有文件名,每个文件名一行:
for file in `ls`
do
    echo $file
done

[*]示例3,输出1-10
for i in $(seq 1 10)
do
    echo $i
done

[*]示例4,使用{1..10} 或者
for i in {a..z}
do
    echo $i
donefor ((…;…;…)) do…done


[*]命令格式:
for ((expression; condition; expression))
do
    语句1
    语句2
done

[*]示例,输出1-10,每个数占一行:
for ((i=1; i<=10; i++))
do
    echo $i
done同时重定向stdin和stdout


[*]创建bash脚本:
while condition
do
    语句1
    语句2
    ...
done

[*]创建input.txt,里面的内容为:
while read name
do
    echo $name
done

[*]执行命令:
until condition
do
    语句1
    语句2
    ...
done引入外部脚本

概述


[*]类似于C/C++中的include操作,bash也可以引入其他文件中的代码。
[*]语法格式:
until [ "${word}" == "yes" ] || [ "${word}" == "YES" ]
do
    read -p "Please input yes/YES to stop this program: " word
done示例


[*]创建test1.sh,内容为:
while read name
do
    for ((i=1;i<=10;i++))
    do
      case $i in
            8)
                break
                ;;
            *)
                echo $i
                ;;
      esac
    done
done

[*]然后创建test2.sh,内容为:
for ((i=1;i<=10;i++))
do
    if [ `expr $i % 2` -eq 0 ]
    then
      continue
    fi
    echo $i
done

[*]执行命令:
func_name() {# function关键字可以省略
    语句1
    语句2
    ...
}
来源:[url=https://www.cnblogs.com/han-fei/p/178926while read name
do
    echo $name
done.html]https://www.cnblogs.com/han-fei/p/178926while read name
do
    echo $name
done.html
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!
页: [1]
查看完整版本: Linux-03shell语法3