状态码 | 描述 |
0 | 命令成功结束 |
1 | 通用未知错误 |
2 | 误用Shell命令 |
126 | 命令不可执行 |
127 | 没找到命令 |
128 | 无效退出参数 |
128+x | Linux信号x的严重错误 |
130 | 命令经过Ctrl+C控制码越界 |
255 | 退出码越界 |
状态码访问:shell
$echo $?express
Shell符号规则,现总结备忘以下:编程
1.方括号[]bash
通常来讲经常使用于test命令spa
example:命令行
[ $arg1 = $arg2 ] :检查两个参数是否相等。code
[ -d $HOME ] --检查$HOME代指是否为目录文件,如果则返回状态码0,这种状况下才判断成功blog
其实质至关于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
六、Shell的输入与输出
这里只说明几种特殊的状况:
a.只重定向错误输出:
方法:将对应的文件描述符写在重定向符号前面。
b.临时重定向
方法:在文件描述符前加and(&)
$echo "This is an error message" >&2
c.永久重定向
方法:用exec来告诉shell在脚本运行期间重定向某个文件描述符。
$exec 1>testout