Jump to content
Compatible Support Forums
Sign in to follow this  
Dapper Dan

Shell script for more than one command

Recommended Posts

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

Share this post


Link to post

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?

Share this post


Link to post

So do you need to have "**" between commands? Or can you just write commands one after another and they will run in that order?

Share this post


Link to post

the ** is to give commands to the ftp program.

 

In a file, type in

 

Quote:
mkdir ./temp

touch ./temp/file.txt

echo "something" >> ./temp/file.txt

 

That should run in order...make sure to make it executable, though.

Share this post


Link to post

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

 

Share this post


Link to post

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.

Share this post


Link to post

Howdy DapperDan,

 

you can concatenate multiple commands in a script e.g. in this way ...

 

Code:
[sup]#!/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"[/sup]

 

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:
[sup]NO-GO-EXAMPLE ...cmdSeq="mkdir -p $baseDir ; cp /var/log/messages $outFile ; tail -n 5 $outFile"$cmdSeq[/sup]

 

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:
[sup]EXAMPLE: ensure proper exec. of previous cmd ...cmdSeq="mkdir -p $baseDir & cp /var/log/messages $outFile & tail -n 5 $outFile"$cmdSeq[/sup]

 

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 smile

 

hope that helps

Share this post


Link to post

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
Sign in to follow this  

×