1.变量
(1)定义变量
变量名=变量值
如:num=10
(2)引用变量
$变量名
(3)清除变量值
unset 变量名
(4)从键盘获取变量值
/*在一行上显示和添加提示,使用read -p*/
read 变量名1 变量名2
(5)导出环境变量
作用是:将环境变量设为全局变量,让其他shell脚本识别该变量,如:
export DATA=250
查看环境变量:env
此时可看到环境变量中已经有 DATA;
这样,可在终端或者在其他的shell中直接读取:
echo "data=$DATA"
(5)预设变量
$# --> 传给shell脚本参数的数量
$* --> 传给shell脚本参数的内容
$1 $2 $3 ... --->运行脚本时传递给其的参数,用空格隔开
$? --> 命令执行后返回的状态,用于检查上一个命令执行是否正确(linux中,命令退出状态为0表示该命令正确执行,任何非0值表示命令出错)
$0 --> 当前执行的进程名
$$ --> 当前进程的进程号
(6)特殊变量
"" --> 包含的变量会被解释
'' --> 包含的变成会被当成字符串解释
`` --> 反引号中的内容作为系统命令,并执行其内容,可以替换输出为一个变量
echo "today is `date`"
\ --> 转义字符,配合 echo -e 才起作用
echo -e "haha\ndudu"
() --> (命令序列),不影响当前shell中的变量
data=10
(data=100)
echo "data=$data"
结果是data=10
{} --> {命令序列},会影响当前变量
data=10
{data=100}
echo "data=$data"
结果是data=100
(7)判断变量是否存在
{num:-val} --> 如果num存在,表达式的值就是num,否则为val,如:
echo ${num:-100}
结果是100
num=200
echo ${num:-100}
结果是200
{num:=val} --> 如果num存在,表达式的值就是num,否则为val,同时将num的值赋值为val,如:
echo ${num:=100}
echo $num
结果为100,同时num的值也变成了100
2.字符串的操作
3.条件测试
test命令:用于测试字符串、文件状态和数字
test命令有两种格式:
test condition 或[ condition ]
使用方括号时,要注意在条件两边加上空格。
(1)文件测试
测试文件状态的条件表达式
-e 是否存在
-d 是目录
-f 是文件
-r 可读
-w 可写
-x 可执行
-L 符号连接
-s 文件非空
-c 是否字符设备
-b 是否块设备
(2)字符串测试
= 两个字符串相等
!= 两个字符串不相等
-z 空串
-n 非空串
(3)数值测试
-eq 数值相等
-ne 数值不相等
-gt 数1大于数2
-ge 数1大于等于数2
-le 数1小于等于数2
-lt 数1小于数2三
(4)复合语句测试
命令执行控制
&& --> command1 && command2 //当command1的执行成功(结果为0)时,才会继续执行command2;当command1的执行失败(结果不为0)时,不会继续执行command2
|| --> command1 || command2 //当command1的执行成功(结果为0)时,不会继续执行command2;当command1的执行失败(结果不为0)时,才会继续执行command2;
多重条件判定
-a --> and 两种情况同时成立 --> test -r file -a -x file //file同时具有r和x权限时,才为true
-o --> or 两种情况任何一个成立
! --> 相反状态 --> test ! -x file //当file不具有x权限时,才为true
4.控制语句
if case for while until break
(1)if
if [条件1];then
执行第一段语句
elif [条件1];then
执行第二段语句
else
执行第三段语句
fi
(2)case
case $变量名称 in
"第一个变量内容")
程序段1
;; #相当于break
"第二个变量内容")
程序段2
;; #相当于break
*) #相当于default
其他程序段
exit 1
esac
(3)for循环
形式一:
for((初始值;限制值;执行步阶))
do
程序段
done
declare 用来声明shell变量,设置变量的属性,declare也可以写作typeset
形式二:
for var in con1 con2 con3...
do
程序段
done
第一次循环时,$var的内容为con1;
第二次循环时,$var的内容为con2;
第三次循环时,$var的内容为con3;
(4)while
while [condition]
do
程序段
done
(5)until
until [condition]
do
程序段
done
当condition成立时,退出循环
5.函数
定义
/*function*/ 函数名(){
命令
}
函数调用:
函数名 param1 param2......
使用return 提前结束函数并带回返回值
return --> 从函数中返回,用最后状态命令决定返回值
return 0 --> 无错误返回
return 1 --> 有错误返回
加上可执行权限
chmod +x xxxx.sh