Jump to...
redirecting...

Log for Ubuntu 台灣社群

有個bash問題想請教一下各位先進
local command:(Ubuntu 18.04)

ssh_test/test.sh; echo ${PIPESTATUS[0]};
+ exit 1
1

ssh command:(Ubuntu 18.04)

ssh 127.0.0.1 "ssh_test/test.sh; echo ${PIPESTATUS[0]}"
+ exit 1
0

test.sh
#!/bin/bash
exit 1
用ssh來執行script時的exit回傳值不同的問題
正常執行 exit 1 取得回傳值是1,但是改用ssh執行時,卻always取得0
test.sh
#!/bin/bash
exit 1
這是你的bash內容?
直接exit 1
然後本地執行,跟ssh執行結果不同?
你的意思是這樣?
很怪
等大佬回答
因為你打成這樣看不太懂 XD
XD.. sorry... 因為到處找不到答案
local command:

ssh_test/test.sh; echo $?;
+ exit 1
1

ssh command:

ssh 127.0.0.1 "ssh_test/test.sh; echo $?"
+ exit 1
0

test.sh
#!/bin/bash
exit 1
我想問你一下,用 ssh 進入 127.0.0.1 之後,會到達哪個 directory?
另外,引號裡面的兩個命令,是由那種 shell 解譯的? ssh 還是其他?
預設是home
.sh宣告的是bin/bash
應該就是用bash
那麼 ssh_test/ 確實是在 home 裡面嗎?
ssh 執行有run到
他有exit 1
這個宣告是在哪設定的?
.sh file第一行
#!/bin/bash
執行.sh時,我也有改過強迫用bash來執 /bin/bash test.sh ,結果一樣
換一台ubuntu10來測,結果一樣
10....?
喔你是說那個。但我問的是括號中的字串是誰執行的
剛好有老機器來試
試試看:
ssh 127.0.0.1 ' bash -c "ssh_test/test.sh; echo $?" '
注意我用了雙重的引號
sudo bash test.sh
一般不都是这么用的嘛
沒事不要用 sudo 啦!
自由大的,我試完結果一樣,回傳0,不是預期的1
你可以写exit 0
或者exit 1
你怎么写程序就怎么运行啊
那麼,你直接在 local 執行:
bash -c "ssh_test/test.sh; echo $?"
結果又如何?
結果是0
跟remote相同
bash -c ssh_test/test.sh; echo $?
這個結果是1
有加雙引號跟沒加雙引號,結果居然不同
因為執行命令的 shell 不是同一個執行緒,環境設定也不同
因為你在 local 跑了他啊...
遠端收到了
...
"ssh_test/test.sh; echo 0"
當然只會吐 0
啊!對喔!
所以應該用單引號
正解
Fish大,一語道破
是的,原來的 ssh 命令改用單引號應該會正確
這是變數轉值的問題
感謝大家的協助
讀完可以避掉絕大多數的雷
尤其是變數代換的部份
搭配 man bash 效果更佳
讀完 toeic 990 (x
可以寫點字,突然丟連結會怕 XD
可能太舊的頁面了,居然沒有 preview
嗯,果然也沒有手機版w
他英文沒有用很深的單字,慢慢讀應該還 ok 啦。真的不行還可以用大絕招 code speaks 啊w
像這樣
[photo](media:AgACAgEAAx0CPRn5XQAC8z1evn3FFmCQ_zSeR954GNB2NuoWawACtKgxG7v_8UUKvax14M_1B_DjawYABAEAAwIAA20AA-LoAwABGQQ@telegram)