带参数问题的#!/ bin / bash可执行文件

时间:2018-02-07 02:01:35

标签: linux bash parameters

为什么我不能理解这里的问题?参数catch在/ bin之外工作,但我不想使用“./”来运行我打算制作的命令...

我在/bin目录中添加了这个脚本:

$ cat /bin/test
#!/bin/bash
echo $@

当我执行它时,我收到错误。例如:

$ test one two
bash: test: one: unary operator expected

但是,当我将相同的脚本放在不同的位置时:

$ cat /home/user/run/test
#!/bin/bash
echo $@

它正确运行:

$ /home/user/run/test one two
one two

1 个答案:

答案 0 :(得分:1)

解决方案不是为您的个人脚本使用shell builtins或系统命令的名称。

这是您观察到的问题:

$ test one two 
bash: test: one: unary operator expected

但是,请注意:

$ type test
test is a shell builtin

由于test是内置的shell,因此忽略您的命令并运行shell内置。

为shell脚本选择另一个名称,最好是与标准系统命令不冲突的名称。