txt 文件和命令行中的空格识别方式不同

Spaces are not recognised in the same way in a txt file and in a command line

我正在使用 Mac。我已经编译了一个字节码 run,它可以处理命令行中的字符串输入,例如:

./run "Here is a text input"

为了测试run,我写了inputs.txt,其中包含多行输入,一行代表一个输入:

"input1"
"This is input 2"
"input 3"

还有,这里是 test.sh:

#!/bin/bash
while IFS='' read -r line || [[ -n "$line" ]]; do
    echo "Text read from file: $line";
    ./run $line
done < inputs.txt

问题是,包含 space 的输入行测试失败,尽管在命令中测试同一行有效。

所以我猜,space 在 inputs.txt 和命令行中的解释不同。

有谁知道如何使 inputs.txt 中的 space 的解释方式与在命令行中的解释方式相同?也许我应该更改 inputs.txt?

的格式

我认为你只需要改变

./run $line

./run "$line"

这样,在调用 运行 之前,$line 的使用不会被拆分成参数。