我创建了一个简单的bash脚本来直接执行位置参数,执行方式如下:
$ Test $1 $2
但是,除非我在其前面添加sh
,否则它不会运行
$ sh Test $1 $2
我在执行后使用输入创建了其他脚本,并且在环境中没有sh
的情况下它们都运行良好。
我的简单程序就像
echo "my name is $1 I am $2 old."
我知道如何在没有前面的sh
的情况下运行它吗?
答案 0 :(得分:3)
Test
需要可执行
chmod +x Test
它还需要位于PATH
中的目录中。如果不是,您需要具体:
./Test "$1" "$2"
答案 1 :(得分:2)
在源代码中,您需要路径shell
#!/bin/sh
echo "my name is $1 I am $2 old."
设置权限后,可以执行
$ chmod +x Test
$ ./Test $1 $2
答案 2 :(得分:1)
到目前为止给出的答案之一可能是正确的。但是你没有向我们提供足够的信息来确定(你运行的是什么操作系统?运行脚本时你会得到什么 - 如果有的话?),所以这里是你如何诊断问题自己。
1)输入命令
which Test
如果未安装which
命令,请跳过。如果答案是
/directory/containing/your/script/Test
然后你知道你实际上正在运行你的脚本。其他可能性
which: no Test in [list of all directories on your path]
这意味着找不到测试命令。我怀疑是这种情况,因为你说它与其他工作的脚本位于同一目录中。
/usr/bin/test
这意味着您在Windows下运行cygwin,或者某些命令不区分大小写的类似系统。因此,您正在运行系统测试命令而不是测试脚本。最好的选择:重命名您的脚本。 (您可以将目录放在$ PATH的前面,以便找到您的脚本而不是系统命令 - 但这可能会破坏使用系统测试命令的其他内容。)
2)如果没有which
命令,请查看运行时获得的响应
Test Joe 22
如果根本没有响应,则可能是您正在运行系统测试命令(有关cygwin等的评论,请参见上文)
如果您收到“Test:command not found”,那么该脚本确实不在您的路径上,或者您错误地输入了其他地方提到的shebang(#!)行。注意:拥有这一行是很好的形式,但在许多环境中,没有必要让你的脚本运行。
如果您仍感到困惑,请发送给我们
可选,但可能有帮助,添加
pwd
)echo $PATH
)