The argument for osascript -e
can contain newlines:
osascript -e 'set x to "a"
say x'
You can also specify multiple -e
arguments:
osascript -e 'set x to "a"' -e 'say x'
Or if you use a heredoc, bash
interprets three characters (\
, $
, and `
) between <<END
and END
but no characters between <<'END'
and END
.
osascript <<'END'
set x to "a"
say x
END
Edit:
Since osascript can operate with a heredoc (ie take input from /dev/stdin) then one can just write the script as a whole file and prepend with the correct shebang line:
#!/usr/bin/env osascript
set x to "a"
say x
This also allows you to save your apple script as a actual program in ~/Applications/.app using the following procedure (changing for your script's name):
mkdir -p ~/Applications/<APP_NAME>.app/Contents/MacOS
touch ~/Applications/<APP_NAME>.app/Contents/MacOS/<APP_NAME>
open -A TextEdit ~/Applications/<APP_NAME>.app/Contents/MacOS/<APP_NAME>
Ensure that both the script file in .../MacOS/ and the matches
I'm not sure I understand correctly - if in the third line of Your script You're checking whether ftp
service is running You can use following script:
#!/bin/bash
launchctl list | grep ftpd
if [ $? != 0 ]; then
IPADDR=$(ifconfig -a | perl -nle'/(\d+\.\d+\.\d+\.\d+)/ && print $1' | grep -v 127.0.0.1)
launchctl load "/System/Library/LaunchDaemons/ftp.plist"
osascript -e "tell application \"Finder\" to display alert \"FTP Launched and ready for file-transfer\" & character id 8233 & character id 8233 & character id 8233 & \"Address: ftp://\" & \"$IPADDR\" & \":21\" & character id 8233 & \"User Name: \" & \"$USER\""
else
launchctl unload -w "/System/Library/LaunchDaemons/ftp.plist"
osascript -e 'tell application "Finder" to display alert "FTP session closed"'
fi
Run this a sudo
.
Explanation:
- To check if job is running use
launchctl list
.
- To get ip address quickly use my perl script (You may want to
grep
it differently in order to get rid of additional IP addresses.
- The only problem now is that Finder app is not brought to front but this can be solved if needed.
Best Answer
Prepend each line of a file with a capital A and write a new file-