2011-07-22 20:18:22 +0000 2011-07-22 20:18:22 +0000
25
25

Shell脚本呼应新行到文件

我想在shell脚本中的变量之间呼应一个新行到文件中。这是我的代码。

var1="Hello" var2="World!" logwrite="$var1 [Here's where I want to insert a new line] $var2 echo "$logwrite" \>\> /Users/username/Desktop/user.txt

现在,当我运行我的脚本时,文件user.txt显示如下:

Hello World!

我想让它显示:

Hello World!

我该怎么做?

EDIT: 这是我的shell脚本,我想让它显示:

echo -n "What is your first name? " read first echo -n "What is your last name? " read last echo -n "What is your middle name? " read middle echo -n "What is your birthday? " read birthday echo -e "First Name: $first /nLast Name: $last /nMiddle Name: $middle /nBirthday: $birthday" \>\> /Users/matthewdavies/Desktop/user.txt qlmanage -p "~/Desktop/user.txt"

我怎么做?

0x1&

答案 (2)

32
32
32
2011-07-22 20:20:04 +0000
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
```。
5
5
5
2011-07-22 20:35:53 +0000
var1='Hello'
var2='World!'
echo "$var1" >> /Users/username/Desktop/user.txt
echo "$var2" >> /Users/username/Desktop/user.txt

或者实际上你不需要vars:

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

john t的答案有一个问题:如果任何一个变量都有\n字符串(或者其他序列,比如\t),它们就会被翻译。

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

还有嗯. 我看到你把答案写进了一个变量$logwrite里. 如果这是这个变量的唯一用途, 那似乎没有意义.

我认为here-doc可以更易读,特别是如果你有很多行要附加到日志中。

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

(这个词,EOF,是一个你可以选择的定界符,可以是任何一个词).

要注意的是,heredoc会展开$变量,就像双引号一样,如果你不想这样,你就引用heredoc,像<<<“EOF”