如果我有一個包含未轉義美元符號的變量,是否有任何方法可以回顯變量的全部內容?如何在bash中回顯包含未轉義美元符號的變量
例如一些調用的腳本:
./script.sh "test1$test2"
,然後,如果我想使用的參數,它被 「截斷」,例如:
echo ${1}
test1
當然單中引用可變名稱並沒有幫助。我無法弄清楚如何引用它,這樣一旦腳本收到參數,我至少可以逃脫美元符號。
如果我有一個包含未轉義美元符號的變量,是否有任何方法可以回顯變量的全部內容?如何在bash中回顯包含未轉義美元符號的變量
例如一些調用的腳本:
./script.sh "test1$test2"
,然後,如果我想使用的參數,它被 「截斷」,例如:
echo ${1}
test1
當然單中引用可變名稱並沒有幫助。我無法弄清楚如何引用它,這樣一旦腳本收到參數,我至少可以逃脫美元符號。
該變量在腳本運行之前被替換。
./script.sh 'test1$test2'
的問題是,腳本接收在第一位置「測試1」,它不可能知道,有一個空的(未公佈的)變量的引用。你必須將它傳遞給腳本,這樣才逃離$
:
./script.sh "test1\$test2"
或者使用單引號'
這樣的:
./script.sh 'test1$test2'
在這種情況下,bash將不會從參數字符串擴展變量。
正如Ignacio告訴你的,該變量已被替換,因此您的腳本獲取./script.sh test1
作爲$0
和$1
的值。
但即使在您使用文字引號傳遞參數的情況下,您總是在您的echo "${1}"
中引用"$1"
。這是一個很好的做法。
大括號*不是必需的,因爲這是一個簡單的替換。 – 2010-10-13 12:38:53
是的,他們不需要。使用它們只是可選的。 – Benoit 2010-10-13 12:44:53
通過使用單引號,像$
這樣的元字符將保留其文字值。如果使用雙引號,變量名將被內插。
是的,這似乎是這種情況:) – Not22 2010-10-13 13:17:50
還有其他情況下,雖然我實際上有非轉義美元符號的變量,就像我正在從文件中讀取數據時一樣。然後我想用這些數據調用我的腳本,所以在閱讀它之前,我是唯一選擇sed整個文件的選項嗎? – Not22 2010-10-13 13:22:54
從文件讀取數據不會執行變量替換。 – 2010-10-13 13:26:07