Linux Shell 手记

下面的例子展示了如何向脚本传递参数、脚本如何获取参数、if else判断、变量的使用等基本内容。

这个脚本的调用方式如下:

下面的例子展示了数组、函数、循环等基本使用。

注意,函数fun中的$1,获取的是函数参数,不是脚本调用时传入的参数。$@ 是获取脚本调用时传入的参数列表。

while 循环以及其他几种循环、case、表达式expr的使用

注意这里的case * 并不是所有,而是输入值不在case中,相当于default. 在循环中可以使用continue/break等关键字,非常类似java等其他语言的循环。

脚本之间互相引用

通过source 或者 . 的方式可以引用另一个脚本中的函数或者变量

  • 使用bash +x second.sh执行,在second.sh 中可以调用fun函数和使用file变量。
  • 这里的.和source都可以实现引用first文件中的变量。注意: 如果同时引用了多个脚本的同一个变量名的变量,后面的值会覆盖前面的变量而不会报错。

关于错误处理

  1. 在shell中有一个变量 $? ,这个变量记录的是上次脚本执行的结果,如果正常结束则是0,否则是非0值;
  2. 如果在shell脚本中通过set -o errexit来实现遇到错误就退出,这样能够避免产生更多的错误;
  3. 在shell执行过程中如果出错,可以通过重定向的方式,输出到文件中,比如Command >> filename2>&1

shell中的字典是非常好的数据结构,能够很方便地处理配置

执行之后,输出如下:

文本处理

sed 命令能够对对文本进行操作。

比如有一个文件sedfile,内容如下:

执行 "sed '1,3d' sedfile,则会输出4,5 两行,即对1,2,3行做了删除处理,注意这时文件里面并没有删掉这两行。

除了删除之外,还可以做替换操作。

我们发现,在输出时,将1替换成了0;

文本处理还有一个非常强大的工具-awk

我们首先看看awk的基本处理-按照逗号(,)分割获取想要的文本;

这里我们可以看到awk可以按照任意形式分割文本,然后输出;

特殊变量和值

下列变量通常具有固定意义

下列特殊值可以帮助排查问题

There are no comment yet.

HTML tag cannot be used in this comment.