Re: Multiline commands in do shell script
Re: Multiline commands in do shell script
- Subject: Re: Multiline commands in do shell script
- From: Graff <email@hidden>
- Date: Tue, 03 Feb 2004 14:10:57 -0500
Whups, made a bit of a mistake in my posting. My "do shell script"
commands should look like this:
This command:
do shell script "do shell script "mDNS -B _ssh._tcp local. &>
~/Desktop/mDNSService.txt & killall mDNS"
Should be like this:
do shell script "mDNS -B _ssh._tcp local. &>
~/Desktop/mDNSService.txt & killall mDNS &"
This command:
do shell script "do shell script "mDNS -B _ssh._tcp local. &>
~/Desktop/mDNSService.txt & sleep 5; killall mDNS"
Should be like this:
do shell script "mDNS -B _ssh._tcp local. &>
~/Desktop/mDNSService.txt & {sleep 5; killall mDNS} &"
On Feb 3, 2004, at 1:20 PM, Graff wrote:
You can do multiple commands in one shell line by separating the
commands with a semicolon. In the shell environment that the "do
shell script command" uses (the environment is called sh) you can't
follow a background symbol (&) with a semicolon (;) because they are
both command separators, so you wouldn't need a semicolon after you
background something. For example:
This works, it moves to ~/Desktop and lists the Desktop directory:
cd ~/Desktop; ls
This works, it moves to ~/Desktop in the background and lists the
current directory:
cd ~/Desktop & ls
This does not work in bash or sh, but it works in csh or tcsh. It
does the same thing as just having a & between the commands. This
messed me up mightily since I am familiar with tcsh and I didn't know
why it was failing in AppleScript:
cd ~/Desktop &; ls
So your command would look like this:
do shell script "do shell script "mDNS -B _ssh._tcp local. &>
~/Desktop/mDNSService.txt & killall mDNS"
However, this kills the mDNS application immediately and it doesn't
have a chance to do anything. You might want to put a sleep command
in there to give it a second to work:
do shell script "do shell script "mDNS -B _ssh._tcp local. &>
~/Desktop/mDNSService.txt & sleep 5; killall mDNS"
For more information on the "do shell script" command, see Apple's web
page on it:
<http://developer.apple.com/technotes/tn2002/tn2065.html>
- Ken
On Feb 3, 2004, at 11:09 AM, John C. Welch wrote:
So I need to deal with a command that never exits, (mDNS to be
precise) and
do shell script.
Because of the way mDNS works, even if I run it as this:
mDNS -B _ssh._tcp local. > ~/Desktop/mDNSService.txt &
I never return from the do shell script step. What I'd like to do is
just
create a three - line shell script and run that, but have it live
only in
the script itself...something like
do shell script "#!/bin/sh
mDNS -B _ssh._tcp local. > ~/Desktop/mDNSService.txt &
killall mDNS"
I know there's something stupid I'm missing here, but I can't quite
figure
it out.
_______________________________________________
applescript-users mailing list | email@hidden
Help/Unsubscribe/Archives:
http://www.lists.apple.com/mailman/listinfo/applescript-users
Do not post admin requests to the list. They will be ignored.