Script help


 
Thread Tools Search this Thread
Top Forums UNIX for Dummies Questions & Answers Script help
# 1  
Old 12-17-2014
Script help

I am very new to unix, i have the script below and im trying to find out what it does and how is it doing it?





Code:
 1: #!/bin/bash  
 2: #  
 3: # Run this script as follows: ./script 44 33 22 11 12 23 34 45 5 1 3 2 4  
 4: #  
 5: function process() {  
 6:     sleep   "$1"  
 7:     echo -n "$1 "  
 8: }  
 9: 
10: for data in $*; do 
11:     process "$data" & 
12: done 
13: wait 
14: echo 
15: 
16: exit 0

(edit jmc remove the line numbers)
Code:
#!/bin/bash  
#  
# Run this script as follows: ./script 44 33 22 11 12 23 34 45 5 1 3 2 4  
#  
function process() {  
    sleep   "$1"  
    echo -n "$1 "  
}  

for data in $*; do 
    process "$data" & 
done 
wait 
echo 

exit 0


Last edited by jim mcnamara; 12-17-2014 at 03:46 PM..
# 2  
Old 12-17-2014
Welcome to the UNIX forums.

The code takes the numbers: 44 33 ... and so on
and runs a function called process in the background (creates a separate child process) ; the trailing & does this.
All the child does is to sleep for the number of seconds, then it wakes up and displays the number of seconds it slept.

The parent waits at the end for all children to wake up and print.

Since 45 is the largest time in seconds, the total time it takes the whole script to run will be very close to 45 seconds.

I think the script is meant as a shell script teaching example. You should see the numbers appear in numeric sequence.
This User Gave Thanks to jim mcnamara For This Post:
# 3  
Old 12-17-2014
Script help

Thanks for the information, so if i wanted to Adjust the script to output each value on a line by itself and reverse the order of processing, how might I do it?
# 4  
Old 12-17-2014
I do not get what you mean. You can enter any small group positive numbers in any order and they will appear in numeric order. You will need another completely different algorithm to print them in reverse order. sort comes to mind:
[whole script]

Code:
#!/bin/bash
for n in $* 
do
  echo $n
done | sort  -rn
exit 0


So, this is probably not what you want. Please provide example input, with example output.

Last edited by jim mcnamara; 12-17-2014 at 05:33 PM..
# 5  
Old 12-18-2014
Use sleep $((45 - $1)) (assuming 45 is the largest number) to output in reverse order.
# 6  
Old 12-18-2014
script help

So if I wanted to reverse the order of processing. Do I just replace
sleep "$1" with. sleep $((45-$1)) or am just adding it right in the script
# 7  
Old 12-18-2014
Do both and compare the results.
 
Login or Register to Ask a Question

Previous Thread | Next Thread

5 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

How to block first bash script until second bash script script launches web server/site?

I'm new to utilities like socat and netcat and I'm not clear if they will do what I need. I have a "compileDeployStartWebServer.sh" script and a "StartBrowser.sh" script that are started by emacs/elisp at the same time in two different processes. I'm using Cygwin bash on Windows 10. My... (3 Replies)
Discussion started by: siegfried
3 Replies

2. Shell Programming and Scripting

Shell script works fine as a standalone script but not as part of a bigger script

Hello all, I am facing a weird issue while executing a code below - #!/bin/bash cd /wload/baot/home/baotasa0/sandboxes_finance/ext_ukba_bde/pset sh UKBA_publish.sh UKBA 28082015 3 if then echo "Param file conversion for all the areas are completed, please check in your home directory"... (2 Replies)
Discussion started by: ektubbe
2 Replies

3. UNIX for Dummies Questions & Answers

Calling a script from master script to get value from called script

I am trying to call a script(callingscript.sh) from a master script(masterscript.sh) to get string type value from calling script to master script. I have used scripts mentioned below. #masterscript.sh ./callingscript.sh echo $fileExist #callingscript.sh echo "The script is called"... (2 Replies)
Discussion started by: Raj Roy
2 Replies

4. Shell Programming and Scripting

Script will keep checking running status of another script and also restart called script at night

I am using blow script :-- #!/bin/bash FIND=$(ps -elf | grep "snmp_trap.sh" | grep -v grep) #check snmp_trap.sh is running or not if then # echo "process found" exit 0; else echo "process not found" exec /home/Ketan_r /snmp_trap.sh 2>&1 & disown -h ... (1 Reply)
Discussion started by: ketanraut
1 Replies

5. Shell Programming and Scripting

create a shell script that calls another script and and an awk script

Hi guys I have a shell script that executes sql statemets and sends the output to a file.the script takes in parameters executes sql and sends the result to an output file. #!/bin/sh echo " $2 $3 $4 $5 $6 $7 isql -w400 -U$2 -S$5 -P$3 << xxx use $4 go print"**Changes to the table... (0 Replies)
Discussion started by: magikminox
0 Replies
Login or Register to Ask a Question