创建shell文件、运行程序
使用 vi 创建一个xx.sh(sh代表shell)
运行 Shell 脚本有两种方法
1.作为可执行程序
./ xx.sh
尽量加上 ./ (当前目录下,比较好找)
2.作为解释器参数
/bin/sh test.sh
shell变量
定义变量
定义变量直接定义,变量名和等号之间不能有空格,不能使用关键字
myname="lihegui"
使用变量
使用一个定义过的变量,只要在变量名前面加美元符号或者 ${ 变量名 }
echo $myname
只读变量
使用 readonly 命令可以将变量定义为只读变量,只读变量的值不能被改变。
readonly myname
字符串
字符串可以用单引号,也可以用双引号,也可以不用引号。
单引号字串中不能出现单独一个的单引号(对单引号使用转义符后也不行),但可成对出现,作为字符串拼接使用。双引号里面的变量有效,允许转义字符
your_name="runoob"
# 使用双引号拼接
greeting="hello, "$your_name" !"
greeting_1="hello, ${your_name} !"
echo $greeting $greeting_1
# 使用单引号拼接
greeting_2='hello, '$your_name' !'
greeting_3='hello, ${your_name} !'
echo $greeting_2 $greeting_3
结果
hello, runoob ! hello, runoob !
hello, runoob ! hello, ${your_name} !
获取字符串长度
string=“abcd”
echo ${#string} #输出 4
提取子字符串
以下实例从字符串第 2 个字符开始截取 4 个字符:
string=“runoob is a great site”
echo ${string:1:4} # 输出 unoo
数组
定义数组
array_name=(
value0
value1
value2
value3
)
读取数组
${数组名[下标]}
获取数组中的所有元素
echo "数组的元素为: ${my_array[*]}"
echo "数组的元素为: ${my_array[@]}"
前面加#可以获取数组长度
echo "数组的元素为: ${#my_array[*]}"
echo "数组的元素为: ${#my_array[@]}"
注释
以 # 开头的行就是注释,会被解释器忽略
#此行为注释
传递参数
$0 代表脚本本身
$1… $9 代表第几个参数
echo "执行的文件名:$0";
echo "第一个参数:$1";
echo "第二个参数:$2"
执行
./ xxx.sh 1 2
运算符
语法
if else
a=10
b=20
if [ $a == $b ]
then
echo "a 等于 b"
elif [ $a -gt $b ]
then
echo "a 大于 b"
elif [ $a -lt $b ]
then
echo "a 小于 b"
else
echo "没有符合的条件"
fi
for循环
for var in item1 item2 ... itemN
do
command1
command2
...
commandN
done
函数
funWithParam(){
echo "第一个参数为 $1 !"
echo "第二个参数为 $2 !"
echo "第十个参数为 $10 !"
echo "第十个参数为 ${10} !"
echo "第十一个参数为 ${11} !"
echo "参数总数有 $# 个!"
echo "作为一个字符串输出所有参数 $* !"
}
funWithParam 1 2 3 4 5 6 7 8 9 34 73