将文件读入变量而无需换行

时间:2019-04-11 14:57:20

标签: bash

我不是bash的专家,但我可以想象这将是一个简单的脚本。我试图将只有几行的文件读入单个bash变量而没有新行。

我当前的脚本读取了它们,但保留了换行符

options=$(<vm.options)
echo "$options"

文件看起来像这样:

-Random 1
-Letters2
-Occur 3
-In
-Passwords9

脚本会将其读入变量,其输出将类似于:

-Random 1 -Letters2 -Occur 3 -In -Passwords9

3 个答案:

答案 0 :(得分:2)

阅读文件内容后,您可以在bash中进行搜索/替换:

options=$(<vm.options)
# replace \n with space
options="${options//$'\n'/ }"

现在检查options变量:

declare -p options

declare -- options="-Random 1 -Letters2 -Occur 3 -In -Passwords9"

答案 1 :(得分:2)

这还会产生所需的输出:

echo "\
-Random 1
-Letters2
-Occur 3
-In
-Passwords9" > tmp

var=$(cat tmp | tr -s '\n' ' ')

echo $var

导致:

-Random 1 -Letters2 -Occur 3 -In -Passwords9

带有cat的部分不太漂亮(在特定情况下可能会破裂),但在这种情况下适用。

答案 2 :(得分:2)

您只需将新行替换为tr即可:

options=$(cat lf | tr -s '\n' ' ')