1
我正在嘗試使用SSH運行多個命令,但我沒有得到我的語法。有人能給我一些幫助嗎?通過ssh運行多個命令
ssh "$USER"@"$IP" " \
CURRENT_HOSTNAME=$(hostname); \
sed -c -i 's/\($TARGET_KEY *= *\).*/\1$REPLACEMENT_VALUE/' $DISTRO_FILE; \
sed -c -i 's/$CURRENT_HOSTNAME/$REPLACEMENT_VALUE/' $CONFIG_FILE; \
hostname $REPLACEMENT_VALUE"
這些命令正常工作,如果他們是在本地運行,但我想通過SSH運行它們時收到以下錯誤:
sed: -e expression #1, char 0: no previous regular expression
看來錯誤來自
sed -c -i 's/$CURRENT_HOSTNAME/$REPLACEMENT_VALUE/' $CONFIG_FILE; \
,因爲它試圖讀取SSH本身之前設置的$ CURRENT_HOSTNAME。我不知道如何讀回變量。有任何線索嗎?
編輯代碼:
ssh "$USER"@"$IP" "CURRENT_HOSTNAME=\$(hostname);
sed -c -i \"s/\($TARGET_KEY *= *\).*/\1$REPLACEMENT_VALUE/\" $DISTRO_FILE;
sed -c -i \"s/\$CURRENT_HOSTNAME/$REPLACEMENT_VALUE/\" $CONFIG_FILE;
hostname $REPLACEMENT_VALUE"
這工作!非常感謝!
謝謝。
謝謝喬納森,我已經取得了進展。我現在明白了這個想法。我現在有一個問題,因爲我有本地變量(在本地bash腳本中),一個遠程變量(CURRENT_HOSTNAME)和sed抱怨雙引號。我正在更新上面的代碼。 – user1777907 2013-04-05 18:14:27
我得到了工作代碼(編輯中的解決方案)。非常感謝喬納森! – user1777907 2013-04-05 18:44:45