bash shell里 $0 $? $* $@ $#各表示什么意思

 

$0就是该bash文件名
$?是上一指令的返回值
$*所有位置参数的内容:就是调用调用本bash shell的参数。
$@基本上与上面相同。
"$*"返回的是一个字符串,字符串中存在多处空格。
"$@"返回多个字符串。
$#返回所有位置参数的个数。
 

上一篇: 利用rinetd和socat做端口转发与反向代理   下一篇: SHELL读取配置文件

你问我答

  1. #1 头像 keminar 2015-07-02 01:13:23
    shift会将入参右移:
    1.Bash定义了$1到$9,一共9个位置变量,这就决定了我们不能无限制的用$11之类的来获取更多的入参。  这时候可以用shift了
    2.如果想得到第二个参数到最后一个参数,第一个参数忽略掉,则可以使用shift将原$1去掉
  2. #2 头像 keminar 2016-08-26 11:01:19
    bash test.sh 1 2 3
    $@ 可以循环,如
    for i in "$@";do
       echo $i
    done
    会打印3行

    $* 不可以循环
    for i in "$*";do
       echo $i
    done
    只有一行

提交疑问

回顶部