我想使用以下内容将一些预定义的文本写入文件:
text="this is line one\n this is line two\n this is line three" echo -e $text > filename
我期待这样的事情:
this is line one this is line two this is line three
但是得到了这个:
我很肯定每个之后都没有空格\n,但是额外的空间是怎么出来的?
\n
Heredoc 听起来更方便。它用于向 ex 或 cat等命令解释程序发送多个命令
cat << EndOfMessage This is line 1. This is line 2. Line 3. EndOfMessage
后面的字符串<<表示停止的位置。
<<
要将这些行发送到文件,请使用:
cat > $FILE <<- EOM Line 1. Line 2. EOM
您还可以将这些行存储到变量中:
read -r -d '' VAR << EOM This is line 1. This is line 2. Line 3. EOM
这会将行存储到名为 的变量VAR中。
VAR
打印时,请记住变量周围的引号,否则您将看不到换行符。
echo "$VAR"
更好的是,您可以使用缩进使其在您的代码中更加突出。这次只需添加一个-之后<<即可阻止标签出现。
-
read -r -d '' VAR <<- EOM This is line 1. This is line 2. Line 3. EOM
但是你必须在代码中使用制表符而不是空格来缩进。