如果我有一個變量,其中有多行(文本),我怎麼才能得到最後一行?Bash從變量中獲取最後一行
我已經想通了如何獲取的第一行:
STRING="This is a
multiple line
variable test"
FIRST_LINE=(${STRING[@]})
echo "$FIRST_LINE"
# output:
"This is a"
大概應該有最後一行的運營商。或者至少我認爲,因爲@
第一條線出來。
如果我有一個變量,其中有多行(文本),我怎麼才能得到最後一行?Bash從變量中獲取最後一行
我已經想通了如何獲取的第一行:
STRING="This is a
multiple line
variable test"
FIRST_LINE=(${STRING[@]})
echo "$FIRST_LINE"
# output:
"This is a"
大概應該有最後一行的運營商。或者至少我認爲,因爲@
第一條線出來。
一個簡單的方法來做到這一點是使用tail
:
echo "$STRING" | tail -n1
如果你想與STRING
每行一個元素的數組,使用
readarray -t lines <<< "$STRING"
然後,第一行是${lines[0]}
,最後一行是${lines[-1]}
。在舊版本的bash
中,不允許使用負數索引,您必須手動計算最後一個索引:${lines[${#lines[@]}-1]}
。
你的腳本輸出只是變量(This)的第一個字,而不是所有的行。 –
哦,沒有得到。也許因爲在我的用例中,第一行只有一個單詞。 * phew * –
如果你需要做這樣的操作,不要將行存儲在一個字符串中,而是存儲在一個數組中! –