如何在Linux的一條命令行中執行三條命令?我嘗試了以下:在Linux的單個命令行中執行三條命令
sudo -u oracle -i ; cd /lo2/ram/daska; ./script.sh
當我執行這個只有sudo
命令執行。
請告訴我
如何在Linux的一條命令行中執行三條命令?我嘗試了以下:在Linux的單個命令行中執行三條命令
sudo -u oracle -i ; cd /lo2/ram/daska; ./script.sh
當我執行這個只有sudo
命令執行。
請告訴我
執行sudo
後有一個新的shell,其餘的「commands」不是它的一部分,而是父shell的一部分。你可以這樣做:
sudo -u oracle -i bash -c "cd /lo2/ram/daska && ./script.sh"
或直接
sudo -u oracle -i /lo2/ram/daska/script.sh
使用& &分離
sudo -u oracle -i && cd /lo2/ram/daska && ./script.sh
只是在使用'&&'時,如果鏈中的任何命令失敗,其餘的將不會執行 – frost
不行,這是行不通的我用分號和&&符號試過,它只執行第一個命令..請再次檢查 –
如果所有命令都成功,則用'&&替換';'沒有區別。無論如何,這不是問題,也不解決問題。 –
您還可以使用分號來單獨您的命令
sudo -u oracle -i ; cd /lo2/ram/daska ; ./script.sh
使用& &和分號之間的區別是,如果你只有在前一個成功後纔想執行每個命令那麼你可以使用& &運算符。但是,如果要執行命令,則不管以前是否執行命令,都可以使用分號(;)分隔命令。
不,這是行不通的我用分號和&&符號試過,它只執行第一個命令..請再次檢查 –
@Ramdas: - 你看到了glglgl給出的答案'sudo -u oracle sh -c'cd/L02/RAM/daska; 。/ script.sh'' –
是的,但oracle配置文件沒有得到那裏,當我使用上述命令與-i ..我收到錯誤失敗sqlplus命令未找到,當我手動執行命令其工作正常 –
我只是將Piperoman's和Rahul的答案加到&&
後面的命令只有在第一個成功執行後才執行,並且總是執行下面的命令:;
。
所以
sudo -u oracle -i ; cd /lo2/ram/daska ; ./script.sh
如果你不在乎是否一切鏈執行,並
sudo -u oracle -i && cd /lo2/ram/daska && ./script.sh
如果你這樣做。
如果你
sudo -u oracle -i ; cd /lo2/ram/daska; ./script.sh
你告訴用戶下運行oracle
登錄shell應啓動。發生這種情況,其他命令在離開此shell後執行。
這可能不是你想要的。
我看到下面的選項:
sudo -u oracle sh -c 'cd /lo2/ram/daska; ./script.sh'
這在原則上須藤的手冊頁提到
。
後者取決於腳本是否需要這個特定的工作目錄或不... – glglgl
是的,這是一個有效的點。 –