On 07/16/2014 06:32 AM, Isak Lichtenstein wrote:
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.
Ubuntu default login shell is bash.
Default for /bin/sh is to link to dash.
So shell scripts that use
#!/bin/sh
will execute with dash.
You may have changed this on your machine and don't remember.
Many developers do.
I just checked a fresh 14.04 to make sure my knowledge is up to date.
ls -l /bin/sh
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
--
_______________________________________________
yocto mailing list
[email protected]
https://lists.yoctoproject.org/listinfo/yocto