在Linux中的单个命令行中执行三个命令

时间:2015-05-13 09:44:05

标签: linux

如何在Linux中的一个命令行上执行三个命令?我尝试了下面的内容:

sudo -u oracle -i ; cd /lo2/ram/daska; ./script.sh

执行此操作时,只执行sudo命令。

请告诉我

5 个答案:

答案 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的手册页中提到过。