shell脚本编写

变量

  • 定义变量
    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
已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页