当我在运行Mac OS X v10.6.7(Snow Leopard)的Mac上的Bash脚本中引用$ 0时,我得到的不是脚本的名称.-bash
我运行了Stack Overflow问题中描述的脚本:
#!/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
以下是:
> . show_parms.sh foo
# arguments called with ($@) -->  foo
# $1 -------------------------->  foo
# $2 -------------------------->
# path to me ($0) ------------->  -bash
# parent path (${0%/*}) ------->  -bash
# my name (${0##*/}) ---------->  -bash
有任何想法吗?
小智 9
这是有道理的,因为你正在寻找脚本
. show_parms.sh foo
而不是执行它
./show_parms.sh foo
正如在同一问题的答案中所解释的,您可以使用$BASH_SOURCE知道从中获取命令的文件的名称.
$ 0返回进程的名称。通过使用。操作员,您只需将脚本读入现有的 bash进程并评估其中包含的命令;该进程的名称仍为“ -bash”,这就是您所看到的。您必须实际执行脚本作为其自己的过程:
chmod +x show_parms.sh
./show_params.sh foo
然后,您将获得期望的结果。这不是OS X专用的;这就是bash(或sh)的工作方式。
| 归档时间: | 
 | 
| 查看次数: | 3747 次 | 
| 最近记录: |