如何在Linux中的一个命令行上执行三个命令?我尝试了下面的内容:
sudo -u oracle -i ; cd /lo2/ram/daska; ./script.sh
执行此操作时,只执行sudo
命令。
请告诉我
答案 0 :(得分:4)
使用&&分离器
sudo -u oracle -i && cd /lo2/ram/daska && ./script.sh
答案 1 :(得分:3)
您也可以使用分号分隔命令
sudo -u oracle -i ; cd /lo2/ram/daska ; ./script.sh
使用&&和分号是指如果你只想在前一个命令成功的情况下执行每个命令,那么你可以使用&&运营商。但是,如果要执行命令,无论先前是否执行命令,都可以使用分号(;)分隔命令。
答案 2 :(得分:3)
我将添加到Piperoman和Rahul的答案中,&&
只有在第一个成功并且始终执行;
后续命令时才执行后面的命令。
所以
sudo -u oracle -i ; cd /lo2/ram/daska ; ./script.sh
如果您不关心链中的所有内容是否都会执行,
sudo -u oracle -i && cd /lo2/ram/daska && ./script.sh
如果你这样做。
答案 3 :(得分:3)
执行sudo
后,会有一个新的shell和其他的"命令"不是它的一部分,而是父shell的一部分。你可以这样做:
sudo -u oracle -i bash -c "cd /lo2/ram/daska && ./script.sh"
或直接,
sudo -u oracle -i /lo2/ram/daska/script.sh
答案 4 :(得分:3)
如果你这样做
sudo -u oracle -i ; cd /lo2/ram/daska; ./script.sh
您告诉我应该启动在用户oracle
下运行的登录shell。发生这种情况,并在离开此shell后执行其他命令。
这可能不是你想要的。
我看到以下选项:
sudo -u oracle sh -c 'cd /lo2/ram/daska; ./script.sh'
原则上在sudo的手册页中提到过。