/: 是 bash 中的目录问题

/: 是 bash 中的目录问题

我对 bash 脚本相当陌生,一直进展顺利,但遇到了问题。

我正在尝试创建一个使用正斜杠 (/) 的脚本,但是我不断收到错误消息/: is a directory.

所以基本上我需要的是将命令传递test/(hello)给终端中的程序。所以我添加了反斜杠以使其工作:test\/\(hello\)但是,我收到此错误。这里有什么问题吗?

答案1

仅当您不在参数之前传递命令时才会发生这种情况。您需要像这样调用命令:

command [args ...]

如果你像这样调用它,它就会起作用。

$ echo test/\(hello\)
test/(hello)

根据记录,引用参数通常比转义所有元字符要容易得多(也更具可读性)。您可以使用"and来完成此操作'(有关于此的很好的信息这里)。

答案2

如果您需要将确切的字符串传递test/(hello)给程序,请将其放在单引号之间:

someprogram 'test/(hello)'

除了单引号字符本身之外,每个字符都按字面意思解释在单引号之间。如果字符串中需要单引号字符,请将其传递为'\''(结束文字字符串,引用下一个字符,按字面解释单引号,开始文字字符串)。

echo 'Lasciate ogne speranza, voi ch'\''entrate'

这与您在此处显示的错误消息无关。/: is a directory意味着您尝试/作为程序执行。可能在某个地方您试图写入程序的完整路径,但留下了额外的空格,如

/ path/to/program

该消息中可能还有其他标点字符或控制字符使这一点不太明显。为了方便调试,请将set -x脚本的第二行放在第一#!行之后,以便 shell 打印其执行的每一行的跟踪信息。

相关内容