1 SHELL脚本介绍
什么是shell脚本:就是各种命令的堆砌,从而组合成具有特定功能的“程序”
shell脚本一般为以 .sh
的文件,但这不代表 .sh
文件就是shell脚本或者不以 .sh
结尾文件就不是shell脚本。在这些脚本文件中,第一行会以形如 !#
开头的内容,而这一行也表明了这个文件是以何种方式执行的,如:
#!/bin/bash
这代表此文件执行时会调用 /bin/bash
来执行。其他常见脚本还有
#!/usr/bin/env python
#!/usr/bin/expect
2 shell脚本的执行
- 通过脚本路径来执行
- 需要脚本有x权限
./XX.sh 参数…
/XX/YY/ZZ.sh 参数…
bash SCRIPTNAME
- 在子shell中执行
bash FILE
bash -x FILE
:调试shell脚本- 不需要文件有执行权限
source SCRIPTNAME**
- 在当前shell中执行
source FILE
- 一般用于配置类型的shell脚本
- 不需要文件有执行权限
3 shell脚本的参数
$0
:脚本名- 位置参数:
$1
,$2
,$3
等 $@
:所有参数:参数1 参数2 参数3 …
$*
:所有参数:“参数1 参数2 参数3 …”
$?
:上一个命令执行状态返回值$#
:参数的个数
4 shell函数
- 格式:
函数名(){函数体}
- 调用:
函数名 [参数] …
#!/bin/bash
#猜数字小游戏
guess_number(){
# 注意这里的$1和27行的$1意义并不相同
# 指传入函数中的第一个参数
t=$1
while :; do
read -p "Input the number: " n
if [ $n -gt $t ]; then
echo "retype a smaller number"
elif [ $n -lt $t ]; then
echo "retype a bigger number"
else
echo "Right!!!"
exit 0
fi
done
}
if [ $# -eq 0 ]; then
echo "请输入参数"
exit 1
fi
# 注意这里的$1和7行的$1意义并不相同
# 指传入脚本中的第一个参数
guess_number $1