Erel Segal-Halevi Asked: 2019-02-16 05:27:35 +0800 CST2019-02-16 05:27:35 +0800 CST 2019-02-16 05:27:35 +0800 CST 如何在反引号中使用变量 772 我有一个 bash 脚本,它接受参数“$input”并(除其他外)将其引导到程序中并收集输出。 目前我的线路是: OUTPUT=`./main.exe < $input` 但我收到以下错误: $input: ambiguous redirect 正确的方法是什么? bash scripting 1 个回答 Voted Best Answer Kusalananda 2019-02-16T05:31:46+08:002019-02-16T05:31:46+08:00 您的变量值可能包含空格。 你应该双引号它: output=$( ./main.exe <"$input" ) 在这种bash情况下,shell 要求变量被引用,否则将对它的值执行分词和文件名通配,而其他 shell 可能不需要这样做。 另外,请注意,$input这里是将连接到程序标准输入流的文件的路径名,而不是参数main.exe (我可能误解了您的文本,但绝不会更少)。如果你想$input用作命令行参数,你的命令看起来像 output=$( ./main.exe "$input" ) 有关的: 为什么我的 shell 脚本会因空格或其他特殊字符而窒息? 什么时候需要双引号? 还: *sh shell 中的反引号(即 `cmd`)是否已被弃用? shell脚本中的变量有命名约定吗?
您的变量值可能包含空格。
你应该双引号它:
在这种
bash
情况下,shell 要求变量被引用,否则将对它的值执行分词和文件名通配,而其他 shell 可能不需要这样做。另外,请注意,
$input
这里是将连接到程序标准输入流的文件的路径名,而不是参数main.exe
(我可能误解了您的文本,但绝不会更少)。如果你想$input
用作命令行参数,你的命令看起来像有关的:
还: