[yocto] Bash parser

Isak Lichtenstein Isak.Lichtenstein at kistler.com
Wed Jul 16 03:32:36 PDT 2014


Hi Olof,

Thank you very much for your prompt answer
> 
> On 14-07-16 11:36 +0200, Isak Lichtenstein wrote:
> > In this method I'm using the bash syntax. But a lot of time the parser
> > doesn't manage to parse my file properly. Examples:
> >
> > 	TMP="file1 file2"
> > 	read -a scripts <<< $tmp
> > generates
> > 	ShellSyntaxError: expecting here-document name, got '<'
> >
> > Or
> >
> > 	TMP="file1 file2"
> > 	scripts=(${TMP})
> > generate
> > 	ShellSyntaxError: LexToken(TOKEN,'${TMP}',0,0)
> >
> >
> > Other bash commands are parsed properly, but generate an error while
> > executing them. Example:
> > 	TMP="file1, file2"
> > 	tmp=${TMP//,/ }
> > generates
> > 	Bad substitution
> > 	| WARNING: exit code 2 from a shell command.
> 
> Note that these features you describe here are all bash extensions. For Debian
> users (and I think Ubuntu users as well?), the default /bin/sh is dash and does not
> support either of these extensions. There are cases where the bitbake parser will
> refuse valid portable shell script features as well though, like shell arithmetics, e.g.:

Ubuntu default is actually bash.
> 
>  n=$((n+1))
> 
> > Does a page exist somewhere describing the bash features supported by
> > the parser and also the execution environment?
> > Are arrays supported at all?
> 
> I don't know of any such documentation, but if you stick to portable shell script
> features, you should be mostly fine.
> 
Thanks for the advice. Will try to stick to it.

Isak



More information about the yocto mailing list