shell腳本ssh遠(yuǎn)程執(zhí)行命令給變量賦值的問題解決
需求及目標(biāo)
從A機(jī)器通過SSH方式到B機(jī)器,并執(zhí)行相關(guān)的命令。命令中包含變量及變量的賦值。
代碼如下,意思是,ssh到192.111.111.27這臺(tái)機(jī)器,cd到 / 根目錄下,并執(zhí)行l(wèi)s命令,如果ls出來的結(jié)果不為空,則執(zhí)行echo命令。可以肯定的是 / 根目錄下是有內(nèi)容的。
ssh -i /root/.ssh/private_key -tt -o StrictHostKeyChecking=no rbadmin_app1@192.111.111.27 << eof cd / LSRESULT="$(ls)" echo $LSRESULT exit eof
可以看到當(dāng)執(zhí)行到 echo 命令的時(shí)候,輸出的是空,這就很奇怪。

問題產(chǎn)生的原因
這是因?yàn)槲覀儗⑦h(yuǎn)程執(zhí)行的命令和變量賦值語句放在了 SSH 的輸入重定向中 (<< eof … eof)。在這種情況下,腳本中的變量賦值語句將在本地 Shell 中執(zhí)行,而不是遠(yuǎn)程機(jī)器上。也就是說變量賦值語句其實(shí)不會(huì)在你遠(yuǎn)程執(zhí)行的這臺(tái)B機(jī)器上去執(zhí)行,而是等到ssh命令完成后,回到機(jī)器A上后去執(zhí)行,實(shí)際 ls 命令執(zhí)行的路徑是機(jī)器A在執(zhí)行ssh命令時(shí)所在的路徑。
問題的解決
ssh -i /root/.ssh/private_key -tt -o StrictHostKeyChecking=no rbadmin_app1@192.111.111.27 << eof cd / LSRESULT="\$(ls)" echo \$LSRESULT exit eof
可以看到此時(shí),執(zhí)行echo命令時(shí),就輸出了遠(yuǎn)程機(jī)器上執(zhí)行的ls命令。修改的地方很簡(jiǎn)單,在執(zhí)行的語句外層的$符號(hào)前加上反斜杠 \ , 在引用的變量上加上反斜杠 \ 即可。這是由于命令和變量在遠(yuǎn)程機(jī)器上執(zhí)行,因此需要使用 \ 進(jìn)行適當(dāng)?shù)霓D(zhuǎn)義,以確保變量能夠正確地被解析和賦值。

到此這篇關(guān)于shell腳本ssh遠(yuǎn)程執(zhí)行命令給變量賦值的問題解決的文章就介紹到這了,更多相關(guān)shell ssh遠(yuǎn)程變量賦值內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Shell腳本實(shí)現(xiàn)監(jiān)控iptables規(guī)則是否被修改
這篇文章主要介紹了Shell腳本實(shí)現(xiàn)監(jiān)控iptables規(guī)則是否被修改,本文直接給出實(shí)現(xiàn)代碼,需要的朋友可以參考下2014-12-12
一天一個(gè)shell命令 linux文本操作系列-wc命令詳解
這篇文章主要介紹了一天一個(gè)shell命令 linux文本操作系列-wc命令詳解,需要的朋友可以參考下2016-06-06
linux中systemctl詳細(xì)理解及常用命令解析
systemd是Linux系統(tǒng)最新的初始化系統(tǒng)(init),作用是提高系統(tǒng)的啟動(dòng)速度,盡可能啟動(dòng)較少的進(jìn)程,盡可能更多進(jìn)程并發(fā)啟動(dòng),本文給大家介紹linux中systemctl詳細(xì)理解及常用命令,感興趣的朋友一起看看吧2025-04-04
Shell腳本經(jīng)典之Fork炸彈的分析與預(yù)防
這篇文章主要給大家介紹了Shell腳本經(jīng)典之Fork炸彈的分析與預(yù)防,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起看看吧。2017-06-06
執(zhí)行shell 腳本將日志全部輸出到文件的多種方法
執(zhí)行Shell腳本時(shí),可將所有輸出(stdout+stderr)重定向到日志文件,方法包括直接重定向(> 2>&1)、追加模式(>>)、tee命令(屏幕+文件)、腳本內(nèi)重定向(exec)及l(fā)ogger系統(tǒng)日志,推薦方法1或2,結(jié)合logrotate管理日志大小2025-07-07

