Linux下Shell编程之必背必记(一)

来源:互联网 发布:windows xp下 arp命令 编辑:程序博客网 时间:2024/05/21 06:02

1.Shell常用特殊变量含义解释


$# 传入Shell脚本的参数个数
$? 最后运行命令的结束码(0表示:成功执行 非0表示:执行过程中出现异常或非正常退出)


状态码:
0 命令成功结束
1 通用未知错误
2 误用shell命令
126 命令不可执行
127 没找到命令
128 无效退出参数
128+x Linux信号x的严重错误
130 Linux信号2的严重错误,即命令通过SIGINT(Ctrl+C)终止
255 退出状态码越界


$$ Shell本身的PID(即ProcessID)
$! Shell最后运行的后台ProcessID
$* 所有的参数列表 
$@ 所有的参数列表 没看出和$*有什么区别,都是以"$1" "$2" ... "$n"的形式输出所有参数
$0 Shell本身的文件名
$- 使用Set命令设定的Flag一览
$1 - $n 添加到Shell的各个参数值,$1是第一个参数、$2是第二个参数...


2.Shell数值、字符串、文件的比较


数值比较:
-eq 等于
-ne 不等于
-gt 大于
-ge 大于等于
-lt 小于
-le 小于等于
以上长和test命令一起使用,如:
#!/bin/bash
value1=8
if [$value1 -gt 6] 
then
  echo "$value1 is greater than 6"
fi


字符串比较: 
= 等于
!= 不等于
< 小于
> 大于
-n str  检查str的长度是否非0
-z str  检查str的长度是否为0 


文件比较:
-d file 检查file是否存在并是一个目录
-e file 检查file是否存在
-f file 检查file是否存在并是一个文件
-r file 检查file是否存在并可读
-s file 检查file是否存在并非空
-w file 检查file是否存在并可写
-x file 检查file是否存在并可执行
-O file 检查file是否存在并属当前用户所有
-G file 检查file是否存在并且默认组与当前用户相同
file1 -nt file2 检查file1是否比file2新

file1 -ot file2 检查file1是否比file2旧


3.Bash Shell提供了两项可在if - then语句中使用的高级特性

3.1 用于数学表达式的双括号

               双括号命令符号:

val++  后增

val-- 后减

++val 先增

--val 先减

! 逻辑求反

~ 位求反

** 幂运算

<< 左位移

>>右位移

& 位布尔和

| 位布尔或

&& 逻辑和

|| 逻辑或

#!/bin/bash

value1=8

if (( $value1 ** 2 > 60 )))

then

(( value2=$value ** 2))

echo " the square of $value1 is $value2 !"

fi

3.2 用于高级字符串处理功能的双方括号

#!/bin/bash

if [[ $username == bi* ]]

then

echo "hi $username !"

else 

echo "$username is not existed !"

fi

双方括号提供了test命令未提供的另一个特性,即模式匹配。

双等号将右边的字符串 bi* 视为一个模式,并应用模式匹配规则。上面示例表示双方括号命令$username环境变量进行匹配,看它是否以字母r开头,

如果是,执行then后代码块,否则执行else后代码块。


参考资料 《Linux命令行与shell脚本编程大全(第三版)》


原创粉丝点击