前言

在使用linux的过程中逐渐的发现使用shell脚本的重要性,因为在linux进行操作的时候会发现很多的命令行会重复的出现。所以这个时候我们就会需要一个很好的shell脚本来实现自己所需要进行的操作。

概述

linux 系统默认变量及操作符

系统变量:

  1. 一共有几个参数 : $#
  2. 该运行程序的名字是什么 : $0
  3. 所有参数的值 : $@ 或 $*
  4. 第n个参数是什么 : $n

系统操作符:

  • -eq : =
  • -ne : !=
  • -gt : >
  • -lt : <
  • -ge : >=
  • -le : <=

文件系统操作符

    •         [ -f $var ] : $var包含正常的文件路径或文件名,返回为真
    •         [ -x $var] : $var为可执行文件,返回为真
    •         [ -d $var ]: $var为目录,返回为真
    •         [ -e $var ]: $var文件存在,返回为真

 

  •         [ -c $var ]: $var是一个字符设备文件路径,返回为真
  •         [ -b $var ]: $var是一个块设备文件路径,返回为真
  •         [ -w $var ]: $var文件可写,返回为真
  •         [ -r $var ]: $var文件可读,返回为真
  •         [ -L $var ]: $var为符号链接,返回为真
  •         [XX -a XX]: 且 通&&
  •         [XX -o XX]: 或 通||

字符串比较操作符
######注意:使用字符串比较时,最好采用双中括号
######在“=”前后各有一个空格,如果忘记加空格那就不是比较关系了,而变成了赋值
######在[]中括号中间加入条件进行判断语句的时候在第一个中括号后边需要加一个空格(在有些时候空格还是很必要的)
######在使用[]添加判断条件的话,对于某些相等的判断条件需要使用两个中括号进行包装。

  •        [[ $str1 = $str2 ]]   : 判字符串相等
  •        [[ $str1 != $str2 ]]   : 判字符串不等
  •        [[ $str1 > $str2 ]]   : 判$str1字符串序列大于$str2
  •        [[ $str1 < $str2 ]]   : 判$str1字符串序列小于$str2
  •        [[ -z $str1 ]]       : 判$str1为空 “”则为真
  •        [[ -n $str1 ]]     : 判$str1 不为空 长度非零则为真

if [[ -z $str1]] && [[ -n $str2 ]];
then
execute commands ;
fi

使用心得

其实像类似的这种东西,看再多也没有自己实践一下来的快捷。勤能补拙。

除了之前说过的关于判断条件的时候的空格问题,和两个中括号的问题之外在书写shell脚本的时候还是会有很多东西需要注意一下的。

稍等一段时间,正在准备一个比较全面的小白脚本。恭候登场。

参考文献

shell系统变量及操作符
shell中$(( )) 与 $( ) 还有${ }的区别
X-Y problem