
我有一個$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
效果非常好。這取決於您的要求和可能的值是否確實是您所需要的。