Dapper Dan 0 Posted December 2, 2004 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
CrazyKillerMan 0 Posted December 2, 2004 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
Dapper Dan 0 Posted December 2, 2004 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
CrazyKillerMan 0 Posted December 2, 2004 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
CrazyKillerMan 0 Posted December 2, 2004 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
egorgry 0 Posted December 2, 2004 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
Dapper Dan 0 Posted December 2, 2004 Sure! I think a thread of useful shell scripts everyone could share would be terrific! Share this post Link to post
blackpage 0 Posted December 3, 2004 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 hope that helps Share this post Link to post