如何在反引号内使用变量

Ere*_*evi 4 scripting bash io-redirection variable

我有一个 bash 脚本,它接受一个参数“$input”,并且(除其他外)将它定向到一个程序中并收集输出。

目前我的线路是:

OUTPUT=`./main.exe < $input`
Run Code Online (Sandbox Code Playgroud)

但我收到以下错误:

$input: ambiguous redirect
Run Code Online (Sandbox Code Playgroud)

正确的做法是什么?

Kus*_*nda 6

您的变量值可能包含空格。

你应该双引号:

output=$( ./main.exe <"$input" )
Run Code Online (Sandbox Code Playgroud)

bash壳要求的变量,在这种情况下,被引用和否则将执行单词拆分和文件匹配其价值,而其他外壳可能不需要这个。

另外,请注意,$input这里是将连接到程序的标准输入流的文件的路径名,而不是参数main.exe (我可能误解了您的文本,但绝非如此)。如果你想$input用作命令行参数,你的命令看起来像

output=$( ./main.exe "$input" )
Run Code Online (Sandbox Code Playgroud)

有关的:

还:

  • @Ferrybig 正如 Jesse 所说,但如果您不确定实际需要它们的位置和情况,总是添加它们也无妨。 (2认同)

归档时间:

查看次数:

922 次

最近记录:

6 年,7 月 前