变量
- 定义变量
name=‘nana’ #双引号单引号都可 - 删除变量
unset name - 输出变量的值
${name}、$name
输出
echo:echo -n不换行输出,echo -e会处理特殊字符,比如有\n则会换行
printf:不自动换行输出
print:自动换行输出
常用参数
$# 传递到脚本的参数个数
$* 以一个单字符串显示所有向脚本传递的参数。
$$ 脚本运行的当前进程ID号
$! 后台运行的最后一个进程的ID号
$@ 与$*相同,但是使用时加引号,并在引号中返回每个参数。
$- 显示Shell使用的当前选项,与set命令功能相同。
$? 显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误。
关系运算符
相等 -eq
不相等 -ne
大于 -gt
小于 -lt
大于等于 -ge
小于等于 -le
布尔运算符
!非 -o 或 -a 与
逻辑运算符
&& 与 || 或
字符串运算符
= 等于 != 不等于
-z 字符串长度为0则返回true
-n 字符串长度不为0则返回true
$ 字符串不为空则返回true
注释
单行用#
多行用
:<<’
’
:<<!
!
命令替换
`` 比如:line=`cat file.txt|awk ‘{print NF}’|head -n 1` 先执行``中的内容,再进行赋值
$()的用法一样
二者区别:``无转义;$()有转义
常用命令
- NF & NR
NF表示列;$NF最后一列,输出最后一列的内容
NR表示行 - head & tail
head 输出前面几行,head -n k 输出前面k行
tail 输出最后几行,tail -f 实时输出日志文件,tail -n k 输出文件的后k行;tail -n +10 从第10行以后的
例题:
输出file.txt文件的第10行
tail -n+10 file.txt |head -1
- cut
cut -c 以字符为单位进行切割 - xargs
常用作用1:组合多个命令,比如:cat file.txt |awk -v n=$n ‘{print $n}’ |xargs echo (前面执行完成然后执行echo)
常用作用2:输入数据重新格式化后输出,比如多行的文件用xargs变成单行输出:cat test.txt | xargs - awk
- seq