$0 in sourced Bash script not returning script name
当我在运行Mac OS X v10.6.7(雪豹)的Mac上引用bash脚本中的$0时,我得到的是
我运行了这个堆栈溢出问题中描述的脚本:
1 2 3 4 5 6 7 8 9 10 | #!/bin/bash echo echo '# arguments called with ($@) --> '"$@" echo '# $1 --------------------------> '"$1" echo '# $2 --------------------------> '"$2" echo '# path to me ($0) -------------> '"$0" echo '# parent path (${0%/*}) -------> '"${0%/*}" echo '# my name (${0##*/}) ----------> '"${0##*/}" echo |
生成以下内容:
1 2 3 4 5 6 7 8 | > . show_parms.sh foo # arguments called with ($@) --> foo # $1 --------------------------> foo # $2 --------------------------> # path to me ($0) -------------> -bash # parent path (${0%/*}) -------> -bash # my name (${0##*/}) ----------> -bash |
有什么想法吗?
这是有道理的因为你是采购的脚本
1 | . show_parms.sh foo |
而不是执行它
1 | ./show_parms.sh foo |
作为explained在这两个问题的答案一样,你可以使用
0美元归来的名称的过程。《城市使用。运营商,你只是阅读《进入你现有的bash脚本的过程和评估信息的commands contains the name of the;工艺一直"猛击",那么那就是你看到的。你有两个事实上的execute脚本作为其自身的流程:
1 2 | chmod +x show_parms.sh ./show_params.sh foo |
然后你会得到你期望的。这不是OS X的特异性;这就是我(sh或bash)的作品。
这是因为你是用的。放映。如果你只是型
1 | show_parms.sh foo |
你会得到你想要的结果。