如何在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
是的,这是一个有效的点。 –