变量:
定义变量:变量名 val_name=值 “=”号左右不能有空格,变量名只能字母数字下划线组成,不能数字开头,不能与关键字重名
变量调用:$val_name 或者${val_name} 建议使用后者
注:变量重新赋值,使用val_name=值即可,不能用$符
只读变量:readonly修饰 可以定义时修饰,也可以定义后修饰
删除变量:unset (无法删除只读变量)
字符串:
用单引号,双引号或者可以不用引号
单引号里面不可以用变量,单引号里不能用单引号,但是可以用作拼接
双引号里面可以用变量,可以用转义符\
字符串长度 ${#string}或${#string[0]}
截取字符串${#string:起始index:截取长度}
查子字符串${expr index "$string" in_str }
数组:
array_name=(val1 val2 val3)
array_name[index]获取值或者赋值
获取长度${#array_name[*]}${#array_name[@]}
获取元素长度${#array_name[index]}
注释::<<EOF
注释内容
EOF
shell 脚本传参:
常用的
$1,$2,$3获取第n个参数
$0 获取脚本名
$*,$@获取所有参数
$?获取上一条语句的执行结果,只能用一次,如果没保存结果,则无法再次获取
$#获取参数个数
运算符:
常用:+ - * / %注意乘号需要加一个转义符,运算符两遍必须都加一个空格
== != ! 逻辑运算符 表达式用[]括起来
-eq 等于
-ne 不等于
-gt 大于
-lt 大于
-le 小于等于
-ge 大于等于
-a 与
-o 或
!非
&&双与
||双或
echo 字符串的输出,输出到控制台,文件等
> >> < <<重定向
>覆盖目标
>>追加写入
<<重定向输入
printf 输出,不包含换行,需要手动添加
格式化操作比较方便
%s %d %f 格式化方式,和python类似
流程控制语句:
if else语句:
if [条件]
then
语句
elif[条件]
语句
else
语句
fi
while循环
while((条件))
do
循环体
done
for val in val1 val2 val3...
do
语句体
done
死循环:
for (( ; ; ))
或者while true
do
循环体
done
until 虚幻
until condition
do
语句体
done
case esac 循环:类似java的switch case
函数:
fuction func_name(){
函数体
}
调用函数:
func_name
函数获取参数方式,与脚本获取参数类似 $index ,index大于等于10的时候,需要{}括起来