我有一个$myvar
包含两行的变量,我想将第一行放入一个新变量中。
当我尝试时:
$ myvar1 = $(echo $myvar | head -n 1)
它不起作用,因为 echo 没有像我期望的那样输出换行符。
显然我可以这样做:
$ myvar1 = $(echo $myvar | cut -d " " -f 1)
它将起作用,因为 echo 的输出在第一行包含一个单词,在第二行包含一个单词。
我有两个问题:
- 为什么 echo 打印空格而不是换行符?
- 是否可以轻松或更正确地完成它(我不是 Shell 脚本方面的专业人士,也许我在这里遗漏了一些东西)
答案1
将参数括echo
在引号中以正确保留空格。
echo "$myvar"
否则,值中以空格分隔的元素将被视为 的单独参数echo
。
$ ls -1
Desktop
Documents
Downloads
Movies
Music
Pictures
Sites
$ myvar="$( ls -1 )"
$ echo $myvar
Desktop Documents Downloads Movies Music Pictures Sites
$ echo "$myvar"
Desktop
Documents
Downloads
Movies
Music
Pictures
Sites
获取某项内容的第一行,head -n1
效果很好。这取决于您的要求和可能的值,这是否确实是您所需要的。