从文件中读取一个字符串

时间:2014-01-15 17:58:06

标签: bash shell

我想从文件中读取一个字符串并将其打印如下:

LINE=tr '\n' ' ' < $FILENAME
x1=$LINE
echo $LINE

但命令echo $LINE显示空行?

3 个答案:

答案 0 :(得分:2)

您应该使用命令替换,如下所示:

LINE=$(tr '\n' ' ' < "$FILENAME")

但这会将tr的输出存储到LINE变量中。

答案 1 :(得分:2)

正如其他海报已经指出的那样,要将tr命令的输出嵌入到另一个命令(在本例中为LINE=...)中,请tr命令包围$(...)命令}}。在bash中,这被称为command substitution

LINE=$(tr '\n' ' ' < "$FILENAME")

如果您打算将$LINE用作后续命令的参数序列(在本例中为echo),则在word splitting期间新行最终会被空格替换。这会使tr多余;你不妨这样做:

LINE=$(cat "$FILENAME")

甚至更好:

LINE=$(< "$FILENAME")

单词分词在双引号内无效;因此echo "$LINE"仍然需要tr才能删除换行符。

答案 2 :(得分:1)

我认为您需要使用反引号调用tr命令:

LINE=`tr '\n' ' ' < $FILENAME`