$与一些特殊字符的组合用法

$符号的使用方法:(摘自-网络)

$0 程序所在文件的文件名
$n 脚本执行时的第n个参数,n={1,9}
$* 脚本执行时传入的所有参数,此选项参数可超过9个。
$# 脚本执行时传入的参数个数
$$ 这个程式的PID(脚本运行的当前进程ID号)
$! 执行上一个背景指令的PID(后台运行的最后一个进程的进程 ID号)
$? 执行上一个指令的返回值 (显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误)
$- 显示shell使用的当前选项
备注:默认值为himBH,可通过set 命令设置或取消一个选项配置,例:
set -x
这个选项可打开shell的调试开关,再次输出$-:
]#echo $-
输出结果为:
+ echo himxBH
himxBH
himxBH的每个选项配置作用如下:
h -- hashall
i -- interactive 说明当前shell是一个交互式的shell,例如终端下使用的shell就是交互式的
m -- monitor mode 可以控制进程的停止、继续,前台或者后台执行等操作
x -- 如上
B -- brace expansion
H -- history expand 此配置选项打开时,在shell中执行的语句都会被保存下来,通过history命令可查看,通过!n命令可执行编号为n的某条历史命令
$@ 跟$*类似,但是可以当作数组用
^$ 在正则匹配中表示匹配空行
备注1:$@ 与 $* 都保存所有参数,但是在""里,bash对两者的解析并不一样,"$*" 中,参数将作为一个整体变成字符串,而 "$@" 中每个参数各自转变成字符串,例:
1 #!/bin/bash/
2 function test(){
3     echo "$#";  
4 }
5 test "$*";
6 test "$@";
执行:./test.sh p1 p2 p3
结果: 1  # "$*" 值为 "p1 p2 p3"
   3  # "$@" 值为 "p1" "p2" "p3"
备注2:在函数作用域中,$n、$*、$@、$#等全局参数将被函数的覆盖,例:
1 #!/bin/bash/
2 echo $#;
3 echo $*;
4 function test(){ 
5     echo $#;
6     echo $*; }
7 
8 test arg1 arg2 arg3

执行:sh test.sh g_arg1 g_arg2
结果:2
   g_arg1 g_arg2
   3
   arg1 arg2 arg3

posted on 2015-01-22 15:47  四道水巷  阅读(394)  评论(0编辑  收藏  举报

导航