dav*_*eek 29 shell shell-script echo
我想在 shell 脚本中的变量之间将新行回显到文件中。这是我的代码:
var1="你好" var2="世界!" logwrite="$var1 [这里是我想插入新行的地方] $var2 echo "$logwrite" >> /Users/username/Desktop/user.txt
现在,当我运行我的脚本时,文件 user.txt 显示:
你好,世界!
我希望它显示:
你好 世界!
我该怎么做呢??
编辑:这是我的 shell 脚本:
echo -n “你叫什么名字?” 先读 echo -n "你姓什么?" 最后阅读 echo -n “你的中间名是什么?” 读中间 echo -n “你的生日是几号?” 读生日 echo -e "名字: $first /nLast Name: $last /nMiddle Name: $middle /nBirthday: $birthday" >> /Users/matthewdavies/Desktop/user.txt qlmanage -p "~/Desktop/user.txt"
Joh*_*n T 41
var1="Hello"
var2="World!"
logwrite="$var1\n$var2"
echo -e "$logwrite" >> /Users/username/Desktop/user.txt
Run Code Online (Sandbox Code Playgroud)
解释:
该\n
转义序列表示换行。将-e
参数传递给 echo 可以解释转义序列。
甚至可以进一步简化:
var1="Hello"
var2="World!"
echo -e "$var1\n$var2" >> /Users/username/Desktop/user.txt
Run Code Online (Sandbox Code Playgroud)
甚至:
echo -e "Hello\nWorld! " >> /Users/username/Desktop/user.txt
Run Code Online (Sandbox Code Playgroud)
小智 5
var1='Hello'
var2='World!'
echo "$var1" >> /Users/username/Desktop/user.txt
echo "$var2" >> /Users/username/Desktop/user.txt
Run Code Online (Sandbox Code Playgroud)
或者实际上你不需要 vars:
echo 'Hello' >> /Users/username/Desktop/user.txt
echo 'World!' >> /Users/username/Desktop/user.txt
Run Code Online (Sandbox Code Playgroud)
john t 的回答有一个问题:如果任何 vars 有 \n 字符串(或其他一些像 \t 这样的序列),它们将被翻译。人们可以用 printf 得到类似于他的答案:
printf '%s\n%s\n' 'Hello' 'World!'
Run Code Online (Sandbox Code Playgroud)
还有嗯。我看到您正在将答案组合到变量 $logwrite 中。如果这是该变量的唯一用途,则似乎毫无意义。
我认为 here-doc 可能更具可读性,特别是如果您有很多行要附加到日志中:
cat >> /Users/username/Desktop/user.txt <<EOF
Hello
World
EOF
Run Code Online (Sandbox Code Playgroud)
(这个词,EOF,是一个你可以选择的分隔符。它可以是任何词)。
请注意,heredoc 会扩展 $variables,如双引号。如果你不想要这个,你引用heredoc,比如<<“EOF”
归档时间: |
|
查看次数: |
138691 次 |
最近记录: |