Shell 脚本将新行回显到文件

Shell 脚本将新行回显到文件

我想在 shell 脚本中的变量之间将新行回显到文件中。这是我的代码:

var1="你好"
var2="世界!"
logwrite="$var1 [这里我想插入一个新行] $var2
echo "$logwrite" >> /Users/用户名/Desktop/user.txt

现在,当我运行脚本时,文件 user.txt 显示以下内容:

你好世界!

我希望它显示:

你好
世界!

我该怎么做呢??

编辑:这是我的 shell 脚本:

echo -n“您的名字是什么?”
先读
echo -n“您的姓氏是什么?”
最后阅读
echo -n“您的中间名是什么?”
读中间
echo -n“你的生日是什么时候?”
读生日
echo -e "名字:$first /n姓氏:$last /n中间名:$middle /n生日:$birthday" >> /Users/matthewdavies/Desktop/user.txt
qlmanage -p“〜/桌面/用户.txt”

答案1

var1="Hello"
var2="World!"
logwrite="$var1\n$var2"
echo -e "$logwrite"  >> /Users/username/Desktop/user.txt

解释:

转义\n序列表示换行。将-e参数传递给 echo 可以解释转义序列。

甚至可以进一步简化:

var1="Hello"
var2="World!"
echo -e "$var1\n$var2"  >> /Users/username/Desktop/user.txt

甚至:

echo -e "Hello\nWorld! "  >> /Users/username/Desktop/user.txt

答案2

var1='Hello'
var2='World!'
echo "$var1" >> /Users/username/Desktop/user.txt
echo "$var2" >> /Users/username/Desktop/user.txt

或者实际上你不需要变量:

echo 'Hello' >> /Users/username/Desktop/user.txt
echo 'World!' >> /Users/username/Desktop/user.txt

john t 的回答存在一个问题:如果任何变量有 \n 字符串(或者其他一些序列,如 \t),它们就会被翻译。人们可以用 printf 得到与他的答案类似的结果:

printf '%s\n%s\n' 'Hello' 'World!'

嗯,我看到您正在将答案写入变量 $logwrite。如果这是该变量的唯一用途,那么它似乎毫无意义。

我认为此处的文档可能更具可读性,特别是如果您有很多行要附加到日志中:

cat >> /Users/username/Desktop/user.txt <<EOF
Hello
World
EOF

(这个词,EOF,是您可以选择的分隔符。它可以是任何词)。

请注意,heredoc 将扩展 $variables,如双引号。如果您不想这样,可以引用 heredoc,如 <<"EOF"

相关内容