2025年shell 脚本基本语法

shell 脚本基本语法在使用 linux 过程中 会经常用到 shell 脚本 整理了一些基本使用语法 if else 语法结构 if 条件 then 操作 elif 条件 then 操作 else 操作 fi 案例如下 chenk localhost cat demo sh

大家好,我是讯享网,很高兴认识大家。

在使用linux过程中,会经常用到 shell脚本, 整理了一些基本使用语法。

if…else

语法结构:

if 条件; then 操作 elif 条件; then 操作 else 操作 fi 

讯享网

案例如下:

讯享网[chenk@localhost ~]$ cat demo.sh #!/bin/bash # if ... else ... if [[ "" == $1 ]] ; then echo "You need send an arguement." elif [ $1 == "exit" ]; then echo "Exit" && exit 0 else echo "The Argument is: $1" fi 

上述案例是if...else的使用方法。判断条件[[ "" == $1 ]]中,内层中括号前后都需留一个空格。
注: 在shell 脚本中, $0 表示脚本名称, $1表示传入的第一个参数, $2表示传入的第二个名称;比如上述脚本执行命令语句改成:

cat demo.sh arg1 arg2 

那么 $0为 demo.sh, $1 为 arg1, $2为 arg2;

case

case语法:

讯享网case $var in xx1) 操作 ;; xx2) 操作 ;; xx3) 操作 ;; *) 操作 ;; esac 

上述 xx1-3$var 的value值,如果不是xx1-3里面的值,那么会进入 * 这个选项。

案例如下:

[chenk@localhost ~]$ cat demo2.sh #!/bin/bash # case $var in \n value) ...;; value2)...;; *)... ;; esac case $1 in "one") echo "Im one." ;; "two") echo "Im two." ;; "three") echo "Im three" ;; *) echo "Im others." ;; esac 

注: ;; 操作后的 两个连续分号不能忘,并且两个分号是连续的,中间不能有空格;

函数

函数语法:

讯享网# 定义 function xx(){ 操作 } # 调用 xx() 

案例如下:


讯享网

[chenk@localhost ~]$ cat demo3.sh #!/bin/bash # case $var in \n value) ...;; value2)...;; *)... ;; esac function prt(){ echo $1 case $1 in "one") echo "Im one." ;; "two") echo "Im two." ;; "three") echo "Im three" ;; *) echo "Im others." ;; esac } echo "before function prt" prt one prt two echo "after function prt" 

在函数里面,如果有外部参数,函数内获取的方法也是 $1, $2…,不过需要区分函数的$1 与 脚本的$1是不同的。

while

while语法:

讯享网while 条件 do 操作 done 

案例:

[chenk@localhost ~]$ cat demo4.sh #!/bin/bash # case $var in \n value) ...;; value2)...;; *)... ;; esac function prt(){ echo "prt argument is $1" case $1 in "one") echo "Im one." ;; "two") echo "Im two." ;; "three") echo "Im three" ;; *) echo "Im others." ;; esac } echo "before function prt" while read -p "please input arguement(input exit to exit):" arg && [ $arg != "exit" ] do prt $arg done echo "after function prt" 

还有一个循环是 until, 不同的是:while是在条件成立时,进入循环;而until是在条件成立时,退出循环,其语法为:

讯享网until 条件 do 操作 done 

for…in…

案例

[chenk@localhost ~]$ cat demo5.sh #!/bin/bash for file in `ls .` do echo $file done for num in one two three do echo $num done 

数组

定义一个数组,如下:

讯享网arr=("one" "two" "three" "four") 也可以这样定义: array_name[0]=one" array_name[1]="two" array_name[2]="three" array_name[3]="four" 使用数组: # 整个数组 ${arr[@]} 或者 ${arr[*]} # 某个元素 ${arr[index]} 数组长度: ${#arr[@]} 
[chenk@localhost ~]$ arr=("one" "two" "three" "four") [chenk@localhost ~]$ echo ${arr[0]}, ${arr[1]}, ${arr[2]}, ${arr[3]} one, two, three, four 

for循环

for循环语法:

讯享网for ((初始变量; 条件; 变量++)) 

案例:

[chenk@localhost ~]$ cat demo6.sh #!/bin/bash arr=("one" "two" "three" "four") for ((i=0; i<${#arr[@]}; i++)); do echo ${arr[i]} done 

上述 ${#arr[@]}表示数组长度

小讯
上一篇 2025-03-15 19:30
下一篇 2025-03-30 15:34

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/25613.html