CC BY 4.0 (除特别声明或转载文章外)
如果这篇博客帮助到你,可以请我喝一杯咖啡~
shell脚本速成
引入变量
#!/bin/sh
name='变量名'
echo $name
注意:=前后不能有空格,否则就会出现 ./test.sh: 2: name: not found这个错误,也就是说变量定义会失败。
- 用花括号圈定变量名:
#!/bin/sh
# 这是一个注释
num=2
echo "this is the ${num}nd"
条件
if ....; then
....
elif ....; then
....
else
....
fi
循环
for var in A B C; do
echo "var is $var"
done
#!/bin/bash
for ((var=0;var<=3;var++)); do
echo "var is $var"
done
#!/bin/bash
for var in `seq 3`; do
echo "var is $var"
done
while condition
do
command
done
测试命令
可以使用测试命令来对条件进行测试。比如可以比较字符串、判断文件是否存在及是否可读等等…
通常用[]来表示条件测试,注意这里的空格很重要,要确保方括号前后的空格。
- [ -f “somefile” ]:判断是否是一个文件
- [ -x “/bin/ls” ]:判断/bin/ls是否存在并有可执行权限
- [ -n “$var” ]:判断$var变量是否有值
- [ “$a” = “$b” ]:判断$a和$b是否相等
示例代码:
#!/bin/bash COUNTER=0 while [ $COUNTER -lt 5 ] do COUNTER=$((COUNTER + 1)) echo $COUNTER done
[ 后和 ] 前要空格。参考:“[0: command not found” in Bash [duplicate] lt 即为 less than,小于。
函数
函数的主要使用场景是代码复用。函数定义部分应该写在一个 Shell 脚本的开头。
# 定义
functionName()
{
body
}
# 调用
functionName
无返回值函数:
#!/bin/bash
firstFunction(){
echo "1 try!"
}
firstFunction
有返回值函数:
funWithReturn(){
echo "这个函数会对输入的两个数字进行相加运算..."
echo "输入第一个数字: "
read aNum
echo "输入第二个数字: "
read anotherNum
echo "两个数字分别为 $aNum 和 $anotherNum !"
return $(($aNum+$anotherNum))
}
funWithReturn
echo "输入的两个数字之和为 $? !"
函数传参
在 Shell 脚本中,调用函数时可以向其传递参数。在函数体内部,通过 $n 的形式来获取参数的值,例如,$1表示第一个参数,$2表示第二个参数……当 n >=10 时,需要使用 ${n} 来获取参数。