Shell script for more than one command

This is a discussion about Shell script for more than one command in the Everything Linux category; I'm sure the answer is out there, but I don't seem to be googling for the answer correctly and I keep coming up empty. How do you run more than one command in a shell script so that one command runs immediately after another is completed? Can a string of commands be run in this way indefinitely? Thanks.

Everything Linux 1800 This topic was started by , . Last reply by ,


data/avatar/default/avatar04.webp

1678 Posts
Location -
Joined 2003-09-27
I'm sure the answer is out there, but I don't seem to be googling for the answer correctly and I keep coming up empty. How do you run more than one command in a shell script so that one command runs immediately after another is completed? Can a string of commands be run in this way indefinitely?
 
Thanks

Participate in our website and join the conversation

You already have an account on our website? To log in, use the link provided below.
Login
Create a new user account. Registration is free and takes only a few seconds.
Register
This subject has been archived. New comments and votes cannot be submitted.
Dec 2
Created
Dec 3
Last Response
0
Likes
3 minutes
Read Time
User User User User
Users

Responses to this topic


data/avatar/default/avatar17.webp

757 Posts
Location -
Joined 2000-10-14
I'm a little unsure what you mean. A script file will run from top to bottom and execute commands as it runs from the starting of line 1 to the end of line x.
 
Here is a snippet from some of my code from home:

Quote:read $remote_dir
ftp -v -i $i <<**
put "./$file_extension.$date.$month.$year.tar.gz"
bye
**
rm ~/ftp_$file_extension.tar.gz
ncpumount ~/comptek
 
This will execute the rm command right after the ftp command...does this help?

data/avatar/default/avatar04.webp

1678 Posts
Location -
Joined 2003-09-27
OP
So do you need to have "**" between commands? Or can you just write commands one after another and they will run in that order?

data/avatar/default/avatar17.webp

757 Posts
Location -
Joined 2000-10-14
the ** is to give commands to the ftp program.
 
In a file, type in
 

Quote:mkdir ./temptouch ./temp/file.txt
echo "something" >> ./temp/file.txt
 
That should run in order...make sure to make it executable, though.

data/avatar/default/avatar17.webp

757 Posts
Location -
Joined 2000-10-14
Make sure to add the #!/bin/sh at the top as well.
 
This tells the PC what to use to truck on through it.
 

Quote: 
#!/bin/sh
mkdir ./temp
touch ./temp/file.txt
echo "something" >> ./temp/file.txt
 


data/avatar/default/avatar03.webp

305 Posts
Location -
Joined 2003-08-30
Crazykillerman has givng you teh answer. but...
 
What are you trying to acomplish I may already have a script you can hack at. When I get some time I'll post up some of my nautilus scripts I use for various things. Maybe some people can find them helpfull.

data/avatar/default/avatar04.webp

1678 Posts
Location -
Joined 2003-09-27
OP
Sure! I think a thread of useful shell scripts everyone could share would be terrific!

data/avatar/default/avatar01.webp

120 Posts
Location -
Joined 2004-03-23
Howdy DapperDan,
 
you can concatenate multiple commands in a script e.g. in this way ...
 

Code:
#!/bin/shbaseDir="~/script_commands"outFile="$baseDir/testfile_$( date +%Y%m%d-%H%M%S ).txt"alias cmdSeq="mkdir -p $baseDir ; cp /var/log/messages $outFile ; tail -n 5 $outFile"cmdSequnset cmdSeqecho "all done"
 
The "alias"-thingie here is necessary and it is also often a quite useful method as e.g. a straight invocation of the commands would not work properly ...
 

Code:
NO-GO-EXAMPLE ...cmdSeq="mkdir -p $baseDir ; cp /var/log/messages $outFile ; tail -n 5 $outFile"$cmdSeq
 
In the above example you'd get error-msgs about invalid commandline options for "mkdir".
 
A step further: If you want to ensure that the command-sequence only runs through if there are no errors encountered, you should concatenate the commands with ampersands ("&") like this ...
 

Code:
EXAMPLE: ensure proper exec. of previous cmd ...cmdSeq="mkdir -p $baseDir & cp /var/log/messages $outFile & tail -n 5 $outFile"$cmdSeq
 
But I'm sure you already knew that one from compiling 2.4-kernels (make & make dep & make xyz & make world_go_round ...".
 
As it goes for a "script corner": I wholehartedly support this idea. And if anyone's interested, I could throw in e.g. an iptables-setup script that utilizes "arrays in bash-scripts" for hosts and services. Neat stuff regarding string handling and "loops" in there
 
hope that helps