Note the phrase *startup behaviour* in the paragraph - bash still supports bashisms in its scripts when invoked as sh (after all, that's where the entire historical problem with them comes from)
On Mon, Jun 13, 2011 at 4:56 PM, Grail Dane <[email protected]> wrote: > Hi James > > Thanks very much for the reply. As you can probably guess the typo is in > the email but not in > the actual script. I did further testing and as per the bash install > instructions: > > *sh* > > A symlink to the *bash* program; when invoked as *sh*, *bash* tries to > mimic the startup behavior of historical versions of *sh* as closely as > possible, while conforming to the POSIX standard as well > > > > This would indicate that it is a bash builtin feature to use only POSIX > compliant options. > So from the Cookbook you may need to edit the following from the section > you pointed me to: > > If you wish to change this, you can either make /bin/sh a symbolic link to > your chosen shell > > As this does not work as expected in this case and it may be similar for > other shells to. > > I will try the workaround of adding it as the default shell in the build > and let you know how it goes :) > > Cheers > grail > > > Date: Fri, 10 Jun 2011 11:22:12 +0100 > > From: [email protected] > > > To: [email protected] > > CC: [email protected] > > Subject: Re: Process substitution into loop > > > > Hi Grail, > > > > On 10/06/11 05:46, Grail Dane wrote: > > > > > > > > >> Date: Thu, 9 Jun 2011 21:05:45 -0700 > > >> From: [email protected] > > >> To: [email protected] > > >> CC: [email protected] > > >> Subject: Re: Process substitution into loop > > >> > > >> On Fri, Jun 10, 2011 at 03:53:15AM +0000, Grail Dane wrote: > > >> > Just wondering, as I can't find by googling, if it is at all > possible to > > >> > do a processsubstitution into a while loop within an upstart script? > > >> > > >> > Example: > > >> > while read -r DEVICE > > >> > do > > >> > ip link set dev $DEVICE up > > >> > done< <(ip link | awk '/^[0-9]/ && !/UP/ && gsub(/:/,""){print $2}) > > You have an error in your script: it is missing the closing tick (see > below). > > > > >> > > >> > When issuing the start command on the script I get: > > >> > /proc/self/fd/10: line 6: syntax error near unexpected '<'init: > > >> > network-interfaces main process (1367) terminated with status > 2start: Job > > >> > failed to start Would appreciated if someone would identify if i > have done > > >> > something wrong or if this not a supported feature? > > >> > > >> The <() syntax is not part of the POSIX standard, it's a bash > extension. > > >> Upstart uses /bin/sh to interpret scripts, as is customary; chances > are > > >> you're running on a system where /bin/sh is not bash, and as a result > this > > > > > > Actually /bin/sh is a symbolic link to bash on my system. Is there > anyway to have bash as the > > > shell used? > > > > script > > /bin/bash <<EOT > > while read -r DEVICE > > do > > echo "DEBUG: ip link set dev $DEVICE up" > /tmp/grail.log > > done < <(ip link | awk '/^[0-9]/ && !/UP/ && gsub(/:/,""){print $2}') > > EOT > > end script > > > > Also, just for you :)... > > > > http://upstart.ubuntu.com/cookbook/#changing-the-default-shell > > > > Regards, > > > > James. > > > > > > > >> syntax is not supported. > > >> > > >> A supported syntax would be: > > >> > > >> ip link | awk '/^[0-9]/ && !/UP/ && gsub(/:/,""){print $2}' | > > >> while read -r DEVICE > > >> do > > >> ip link set dev $DEVICE up > > >> done > > >> > > >> -- > > >> Steve Langasek Give me a lever long enough and a Free OS > > >> Debian Developer to set it on, and I can move the world. > > >> Ubuntu Developer http://www.debian.org/ > > >> [email protected] [email protected] > > > > > > > -- > upstart-devel mailing list > [email protected] > Modify settings or unsubscribe at: > https://lists.ubuntu.com/mailman/listinfo/upstart-devel > >
-- upstart-devel mailing list [email protected] Modify settings or unsubscribe at: https://lists.ubuntu.com/mailman/listinfo/upstart-devel
