$ bash -c 'echo "0 is $0 1 is $1"' abc def
0 is abc 1 is def
$ echo 'echo "0 is $0 1 is $1"' > bashtest
$ bash bashtest abc def
0 is bashtest 1 is abc
Run Code Online (Sandbox Code Playgroud)
第二次运行相当于如果我将bash测试变成带有shebang的shellcript然后直接运行它...
基本上我想知道为什么abc并不总是如此$1.它$0在运行时变为bash -c.
hek*_*mgl 10
我也不知道这个.但是手册页提到了它:
-c string:如果存在-c选项,则从字符串中读取命令.如果字符串后面有参数,则将它们分配给位置参数,从$ 0开始.
该ARGUMENTS部分有一个更详细的解释:
ARGUMENTS
如果参数处理后仍保留参数,并且未提供-c和-s选项,则假定第一个参数是包含shell命令的文件的名称.如果以这种方式调用bash,则将$ 0设置为文件名,并将位置参数设置为其余参数.Bash从该文件中读取并执行命令,然后退出.Bash的退出状态是脚本中执行的最后一个命令的退出状态.如果没有执行任何命令,则退出状态为0.首先尝试在当前目录中打开文件,如果没有找到文件,则shell在PATH中搜索脚本中的目录.
| 归档时间: |
|
| 查看次数: |
135 次 |
| 最近记录: |