Variable

如何在縮進時將字元串值分配給多行的變數?

  • August 11, 2019

問題:

  1. 我需要為一個變數分配一個相當長的值。
  2. 我腳本的所有行都必須在一定數量的列之下。

所以,我試圖用不止一行來分配它。

沒有縮進很簡單:

VAR="This displays without \
any issues."
echo "${VAR}"

結果:

This displays without any issues.

但是有縮進:

   VAR="This displays with \
   extra spaces."
   echo "${VAR}"

結果:

This displays with      extra spaces.

如果沒有這些空間,我如何優雅地分配它?

這裡的問題是您用雙引號 ("") 將變數括起來。刪除它,一切都會好起來的。

   VAR="This displays with \
   extra spaces."
   echo ${VAR}

輸出

This displays with extra spaces.

這裡的問題是雙引號變數會保留所有空白字元。如果您明確需要它,可以使用它。

例如,

$ echo "Hello     World    ........ ...            ...."

將列印

Hello     World    ........ ...            ....

在刪除引號時,它不同

$ echo Hello     World    ........ ...            ....
Hello World ........ ... ....

在這裡,Bash 刪除了文本中的額外空格,因為在第一種情況下,整個文本被視為“單個”參數,因此保留了額外的空格。但在第二種情況下,echo命令接收文本作為 5 個參數。

在將參數傳遞給命令時,引用變數也很有幫助。

在以下命令中,echo僅獲取單個參數為"Hello World"

$ variable="Hello World"
$ echo "$variable"

但是在以下情況下,echo會得到兩個參數HelloWorld

$ variable="Hello World"
$ echo $variable

引用自:https://unix.stackexchange.com/questions/163898