I am trying to merge multiple linux commands in one line to perform deployment operation.
For example
cd /my_folder
rm *.jar
svn co path to repo
mvn compile package install
Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.
Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.
Lost your password? Please enter your email address. You will receive a link and will create a new password via email.
Please briefly explain why you feel this question should be reported.
Please briefly explain why you feel this answer should be reported.
Please briefly explain why you feel this user should be reported.
If you want to execute each command only if the previous one succeeded, then combine them using the
&&operator:If one of the commands fails, then all other commands following it won’t be executed.
If you want to execute all commands regardless of whether the previous ones failed or not, separate them with semicolons:
In your case, I think you want the first case where execution of the next command depends on the success of the previous one.
You can also put all commands in a script and execute that instead:
The backslashes at the end of the line are there to prevent the shell from thinking that the next line is a new command; if you omit the backslashes, you would need to write the whole command in a single line.
A more convenient way compared to using backslashes and
&&everywhere is to instruct the shell to exit the script if any of the commands fail. You do that using thesetbuilt-in function with the-eargument. With that, you can write a script in a much more natural way:Save that to a file, for example
myscript, and make it executable:You can now execute that script like other programs on the machine. But if you don’t place it inside a directory listed in your
PATHenvironment variable (for example/usr/local/bin, or on some Linux distributions~/bin), then you will need to specify the path to that script. If it’s in the current directory, you execute it with:The commands in the script work the same way as the commands in the first example; the next command only executes if the previous one succeeded. For unconditional execution of all commands, simply don’t call
set -e: