1、变量
语法:变量名=变量值
PS:=两边不能有空格
1、使用变量:$变量名
ex: Name="wendy"#声明变量
echo $Name 或 echo ${Name} #输出变量
ps:花括号可选
2、只读变量:readonly 变量
3、删除变量:unset 变量
4、字符串变量长度获取:${#字符串变量}
ps: string="abcd" echo ${#string} #输出4
5、字符串变量提取部分:${变量:1:4} #表示从第二个字符开始,截取4个字符
ex:string="abcdedfg" echo ${变量:1:4} #输出bcde
2、变量类型
局部变量:只对当前shell有效
环境变量:所有程序都能访问环境变量
shell变量:可设置
3、符号问题
单引号:变量无效,任何字符原样输出
双引号:可使用变量,可以出现转义字符
ps:拼接字符串用双引号,且变量需要用{}
注释问题:
单行注释:#
多行注释: :<<EOF 注释内容 EOF(EOF可以替换为其他任意字符)
4、数组
定义数组:数据名=(值1 值2 值3...值n)或数组名=(
value0
value1
value2
value3
)或 数据名[0]=value0 数据名[1]=value1
ex:array_name=(value0 value1 value2)
读取数组:${数组名[下标]}
ex:value=${数组名[n]} #@表示获取数组中的单个元素
length=${#数组名[@ || *]}# @、*表示获取数组所有元素的长度
5、参数处理
$# 脚本后面接的参数的个数
$* 脚本后面所有参数,参数当成一个整体输出,每一个变量参数之间以空格隔开
$@ 脚本后面所有参数,参数是独立的,也是全部输出
$$ 脚本运行的当前进程ID号
$! 后台运行的最后一个进程的ID号
$? 上一条命令执行后返回的状态,0表示没有错误,0以外其他所有值表示有错误
6、运算符:
算数运算符: + - * / % = == !=
关系运算符:-eq -ne -gt -ge -lt -le(= != > >= < <=)
布尔运算符:! -o -a(or and)
逻辑运算符: && ||
字符串运算符:= != -z -n $(= != 判断=0为真 判断!=0为真 判断是空为真)
文件测试运算符:(-e -r -w -x -s -d -f -c -b)+文件名 文件存在且可读、可写、可执行、至少有一个字符、是目录、普通文件、字符型特殊文件、块特殊文件
7、shell函数:
[ function ] funname [()]
{
action;
[return int;]
}
或者function fun()
或者fun()
ps:参数返回,可以显示加;
8、shell 输入/输出重定向:
command > file 将输出重定向到file
command < file 将输入重定向到file
command >> file 将输出以追加的方式重定向到file
n >& m 将输出文件m和n合并
n <& m 将输入文件m和n合并
<<tag 将开始标记tag和结束tag之间的内容作为输入
/dev/null:不希望在屏幕上显示输出结果 ,重定向到垃圾箱/dev/null