我的bash腳本中存在一些不一致的行爲。 存在變量,並且它們都具有分配給它們的值,我通過在腳本開始處回顯值來確認它們。遠程SSH會話中的變量
但是,將它們傳遞給遠程SSH會話時,其中一個變量具有值,而另一個變量則顯示爲空白。我很確定我不覆蓋變量的值。
# Script input arguments
USER=$1
SERVER=$2
# Other vars
PFX=$8
#
[email protected]$SERVER
function run {
ssh $ADDRESS /bin/bash [email protected]
}
# Script body, some stuff happens here
run << "SSHCONNECTION2"
sudo mv "/home/$USER/$PFX" "/home/$USER/certs/"
SSHCONNECTION2
所以,mv
輸出
錯誤03-JAN-2017十七時20分39秒的MV:不能移動 '/家/管理/' 到其自身的子目錄,「/家庭/管理/證書/管理'
有人可以給我一個提示我做錯了什麼? 謝謝。
當你引用heredoc sigil時,你告訴本地解釋器不要在heredoc中擴展任何變量。 –
...因此,它只是'USER'的* remote *值,而不是本地的,正在被使用.- –
這實際上是爲什麼對你自己的變量使用全大寫名稱是不好的做法的一部分:它意味着你'使用與操作系統和shell工具共享的相同命名空間,因此您可能會不知不覺地覆蓋(或不知不覺地*使用*)變量,這些變量對系統的其他部分有意義。 –