如何运行bash脚本?

时间:2016-04-03 13:52:55

标签: linux bash shell

我创建了一个简单的bash脚本来直接执行位置参数,执行方式如下:

$ Test $1 $2

但是,除非我在其前面添加sh,否则它不会运行 $ sh Test $1 $2

我在执行后使用输入创建了其他脚本,并且在环境中没有sh的情况下它们都运行良好。

我的简单程序就像

echo "my name is $1 I am $2 old."

我知道如何在没有前面的sh的情况下运行它吗?

3 个答案:

答案 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
  • 包含测试脚本的目录
  • PATH变量(echo $PATH
  • 的内容