一、变量的使用技巧
Shell脚本中的变量使用基本上和其他编程语言差不多,都是通过变量名来获取和设置变量的值。Shell中变量的命名规则和其他编程语言也大同小异。在实际使用中,需要注意以下几个方面的技巧。
1、变量名的大小写
#!/bin/bash myvar="Hello World" echo $myvar echo $MYVAR
结果为:
Hello World
因为在Linux中,变量名是区分大小写的,所以$myvar和$MYVAR是两个不同的变量。
2、变量名的避免
在Shell脚本中,一些特殊变量是由Shell预定义的。使用这些变量名可能会与Shell的功能产生冲突,因此需要避免使用这些变量名。
#!/bin/bash echo $0 echo $1 echo $2
输出的结果是当前程序名和两个传入的参数。
3、将命令输出赋值给变量
#!/bin/bash myvar=$(ls /) echo $myvar
通过将命令的输出赋值给变量,可以方便的通过Shell脚本来处理命令的输出结果。
二、流程控制语句技巧
Shell脚本支持和其他编程语言类似的流程控制语句。
1、if语句
#!/bin/bash if [ $1 -gt 10 ] then echo "$1 大于10" else echo "$1 不大于10" fi
通过判断传入的参数是否大于10,来执行不同的语句。
2、for循环
#!/bin/bash for i in $(seq 1 5) do echo $i done
通过for循环来输出1到5这几个数字。
3、while循环
#!/bin/bash i=0 while [ $i -lt 5 ] do echo $i i=$((i+1)) done
while循环可以用于当条件为真时执行一个命令。
三、函数的使用技巧
在Shell脚本中,函数的定义和其他编程语言基本上是差不多的。定义函数的语法如下:
function 函数名() { 函数体 }
定义一个用于输出Hello World的函数:
#!/bin/bash function hello() { echo "Hello World" } hello
函数需要在调用之前定义,否则Shell会产生一个“未定义函数”的错误。
四、命令行参数的处理
在编写Shell脚本的过程中,可能需要处理命令行参数。Shell脚本中,命令行参数是通过"$1"、"$2"等形式来获取。
1、传递参数
#!/bin/bash echo $1 $2 $3
通过上面的代码,可以输出传入的前三个命令行参数。
2、获取参数个数
#!/bin/bash echo $#
通过上面的代码,可以输出传入的命令行参数个数。
五、异常处理技巧
在Shell脚本中,可能会出现一些异常情况,需要对这些异常进行处理。
1、退出状态码
Shell脚本中,程序退出时可以设置一个状态码。通常0为成功,其他值为错误。
#!/bin/bash ping -c 1 www.baidu.com > /dev/null if [ $? -eq 0 ] then echo "网络正常" else echo "网络故障" exit 1 fi
在上面的例子中,通过ping命令的退出状态码来判断网络是否正常,如果异常则退出程序。
2、捕捉信号
#!/bin/bash function cleanup() { echo "接收到信号" exit 1 } trap cleanup INT TERM while true do echo "正在运行..." sleep 1 done
上面的代码通过trap命令来捕捉INT和TERM信号,当收到信号时会执行cleanup函数。