Linux Shell 编程常见规则及退出状态码

状态码 描述
0 命令成功结束
1 通用未知错误  
2 误用Shell命令
126 命令不可执行
127 没找到命令
128 无效退出参数
128+x Linux信号x的严重错误
130 命令通过Ctrl+C控制码越界
255 退出码越界

状态码访问:

$echo $?

Shell符号规则,现总结备忘如下:

1.方括号[]

一般来说常用于test命令

example:

[ $arg1 = $arg2 ] :检查两个参数是否相等。

[ -d $HOME ]  --检查$HOME代指是否为目录文件,若是则返回状态码0,这种情况下才判断成功

其实质相当于test -d $HOME,我们可以用

$echo $? 检测状态码

2.双圆括号(( expression ))

作用:双圆括号允许你将高级数学表达式放入比较中

下面是双圆括号所支持的命令符号:

双圆括号命令符号
                    符号                                                                          描述                                                   
val++ 后增
val-- 后减
++val 先加
--val 先减
! 逻辑求反
~ 位求反
** 幂运算
<< 左位移
>>  右位移
&  位布尔和
|  位布尔或
&&  逻辑和
||  逻辑或

 3.双方括号 [[ expression ]]

 作用:提供了针对字符串比较高级特性,除了可以像方括号使用test命令那样之外,还可以进行模式匹配。

4.$[ operation ]

作用:执行数学表达式

example:

var3=$[ $var1 / $var2 ]

 5.命令行参数

5.1如何简单接受命令行参数

$0 : 程序名

$1-$9:字符串或者数值参数。

${10}10个参数以上表达方式

参数计数:$#,这个变量跟C语言中的argc是一样的作用,只不过没有显示的表示而已。

5.2 如何遍历参数 :$*和$@的区别

区分codes(来自Linux 命令行与shell脚本编程大全):

res:

5.3 如何处理选项与参数

codes:

 1 #!/bin/bash
 2 while [ -n "$1" ]
 3 do
 4 
 5    case "$1" in
 6 
 7     -a) echo "Found the -a option" ;;
 8 
 9      -b) echo "Found the -a option" ;;
10 
11     -c) echo "Found the -a option" ;;
12 
13     --) shift break  ;;
14 
15   esac
16 
17   shift
18 
19 done
20 
21 count=1
22 
23 for param in $@
24 
25 do
26 
27   echo "Parameter #$count: $param"
28 
29   count=$[ $count +1 ]
30 
31 done

 6、Shell的输入与输出

这里只说明几种特殊的情况:

a.只重定向错误输出:

方法:将对应的文件描述符写在重定向符号前面。

b.临时重定向

方法:在文件描述符前加and(&)

$echo "This is an error message" >&2

c.永久重定向

方法:用exec来告诉shell在脚本运行期间重定向某个文件描述符。

$exec 1>testout

原文地址:https://www.cnblogs.com/qianzhilan/p/4391210.html