Try using the conditional execution & or the && between each command either with a copy and paste into the cmd.exe window or in a batch file. Additionally, you can use the double pipe || symbols instead to only run the next command if the previous command failed.
The semicolon (;) operator allows you to execute multiple commands in succession, regardless of whether each previous command succeeds. For example, open a Terminal window (Ctrl+Alt+T in Ubuntu and Linux Mint).
For your command you also could refer to the following example:
sudo sh -c 'whoami; whoami'
sudo can run multiple commands via a shell, for example:
$ sudo -s -- 'whoami; whoami' root root
Your command would be something like:
sudo -u db2inst1 -s -- "db2 connect to ttt; db2 UPDATE CONTACT SET EMAIL_ADDRESS = '[email protected]'"
If your sudo version doesn't work with semicolons with -s (apparently, it doesn't if compiled with certain options), you can use
sudo -- sh -c 'whoami; whoami'
instead, which basically does the same thing but makes you name the shell explicitly.
I usually do:
sudo bash -c 'whoami; whoami'
If you would like to handle quotes:
sudo -s -- <<EOF
id
pwd
echo "Done."
EOF
An alternative using eval
so avoiding use of a subshell:
sudo -s eval 'whoami; whoami'
Note: The other answers using sudo -s
fail because the quotes are being passed on to bash and run as a single command so need to strip quotes with eval. eval
is better explained is this SO answer
Quoting within the commands is easier too:
$ sudo -s eval 'whoami; whoami; echo "end;"'
root
root
end;
And if the commands need to stop running if one fails use double-ampersands instead of semi-colons:
$ sudo -s eval 'whoami && whoamit && echo "end;"'
root
/bin/bash: whoamit: command not found
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With