我想在 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"