I'm on Mac, and I've written a long script to open up a maximum of 20 Terminal windows and run a subscript with a different input in each of them. When each of these sub-scripts finishes, it changes the value of a variable ("$windows") by -1, which lets the main script know that it can open a new window. It's basically a brute force approach to parallel processing on Mac.
The problem is, when it reaches the max number of windows, it doesn't wait for the "$windows" variable to go down before moving to the next input. It just does the check and then moves on to the next input. For example, if I'm running a script called "subscript" on 50 files, it'll run the first 20, then spit out "Waiting for a window to free up" 30 times before exiting.
Can anyone tell me why it's not working the way I want it to? There is a piece of Applescript in there, btw. Here is the relevant excerpt from my script:
Last edited by methyl; 06-14-2012 at 09:23 PM..
Reason: please use code tags
How about this (simulated your osascript with random sleep).
Things strange in your script:
1. shift command does nothing usefull
2. extra done one end
3. should refresh windows at top of loop to trap finished sub-processes
Last edited by Chubler_XL; 06-15-2012 at 01:14 AM..
Thanks, Chubler. That works perfectly. I'm new to shell scripting (started grad school a year ago and have been teaching myself shell scripting to do brain image analysis). About your notes:
1) I got this script working so that it took the inputs in the Terminal window (you'd have to type in "Parallel 1 2 3 4 5..." into Terminal), but it only worked with the first shift command, for some reason. The second one was so that I didn't have thousands of "Waiting to open window" notices, but you solved that problem.
2) Yeah, that "done" was from a for loop I have embedded earlier in the script.
3) That makes perfect sense.
One thing I don't understand about your changes, though, is why [ $windows -ge $maxwindows ] is in there twice. Does the first one need to be there for the while loop to run?
Coming up with the script I had so far had been a great learning experience, but I learned more from understanding the changes you made than I have in weeks of reading message boards and guides. Thanks a million.
One thing I don't understand about your changes, though, is why [ $windows -ge $maxwindows ] is in there twice. Does the first one need to be there for the while loop to run?
The first one has nothing to do with the loop, it's a statement all by itself.
If $windows is greater or equal to $maxwindows, it prints the message. && is short form for 'if the first succeeds, run the second', very useful for short things where you don't need to bother with an entire code block.
I have a case statement. IS "continue" working in case?
for file in ls dir/*
case $file in
a)
do something
continue
;;
b)
do something
continue
;;
esac
It is a Bourne shell (13 Replies)
Dear Help,
Is it possible to continue the loop by going to the next available value, if the 'expected value' is not found. I have a list of values which might not get incremented by fixed value and hence the loop could break and the script could terminate.
Any suggestion is appreciated.
... (1 Reply)
i have script which get Input via READ value and compare it from file.
when found do some stuff...if not found again ask for Input until you dont enter Right value.
#!/bin/ksh
echo "SID must be in oratab file"
echo "Enter ORACLE_SID of Database:\c "
read ORACLE_SID
x=`cat /etc/oratab|... (3 Replies)
Okay so I am having trouble understand what the computer will do with a code like this
if ; then
echo
echo "Found the file"
blah blah blah
for i in `blah blah blah` ; do
... (2 Replies)
Hi,
I have two sh file. a.sh and b.sh b.sh is command and used by other sh's. I want to add below line to b.sh. When it is done with b.sh I want to continue to process a.sh. But when I use exit 0 in b.sh it is exit from b.sh and a.sh
How can I make it to continue to process?
a.sh ... (2 Replies)
How can I get a script to complete a update, varifiy completion, resboot, and continue with script?
Is it possbile to get script to add itself to the "startup application" list
#!/bin/bash
clear
sudo apt-get update
#Verify/test the update completed
#Reboot
#Start/comtinue... (9 Replies)
Are you sure you want to continue connecting (yes/no) need a way to pass in the value yes without use the except command.
I am creating a script to send down files to an application servers every time it reboots as it picks up the newest image. I do not want to manual connect to each server... (1 Reply)
I want to print entire row of file
awk '{print $0}' inputfile
but sometime before every row have space characters. Example:
" HVLR is not in service on AP 54"
How can i print entire row without space characters ?
thanks (3 Replies)
The following code for search a pattern in file name (or entire file name) and look at its size, code is derived from an ebook about scripting. It is working in HP Unix but I am unable to run in Linux (Ubuntu) Please advise me what is wrong for Linux?
And besides , how can I get rid of errors in... (7 Replies)
I was in the middle of transferring a file over a slow link (768k) using 'scp'. The system on this end got rebooted by an overzealous co-worker... I've got 500+ megs of the file here and 725 megs to go. I'd really hate to start over. I fear that the answer to my question is that I will have to... (3 Replies)