Hi, On 10/01/16 11:09, Oswald Buddenhagen wrote: > On Sat, Oct 01, 2016 at 12:44:36AM +0200, Lars Kruse wrote: >> Am Fri, 30 Sep 2016 22:02:27 +0200 schrieb Jan-Tarek Butt <ta...@ring0.de>: >> >>> --- >>> scripts/deptest.sh | 8 ++++---- >>> 1 file changed, 4 insertions(+), 4 deletions(-) >>> >>> diff --git a/scripts/deptest.sh b/scripts/deptest.sh >>> index 8c859ef..0b0e7a9 100755 >>> --- a/scripts/deptest.sh >>> +++ b/scripts/deptest.sh >>> @@ -86,9 +86,9 @@ test_package() # $1=pkgname >>> [ -n "$pkg" -a -z "$(echo "$pkg" | grep -e '/')" -a "$pkg" != "." -a >>> "$pkg" != ".." ] || \ die "Package name \"$pkg\" contains illegal >>> characters" >>> local SELECTED= >>> - for conf in $(grep CONFIG_PACKAGE tmp/.packagedeps | grep -E "[ >>> /]$pkg\$" | sed -e 's,package-$(\(CONFIG_PACKAGE_.*\)).*,\1,'); do >>> + while IFS= read -r conf; do >>> grep "$conf=" .config > /dev/null && SELECTED=1 && break >>> - done >>> + done < "$(grep CONFIG_PACKAGE tmp/.packagedeps | grep -E "[ /]$pkg\$" | >>> sed -e 's,package-$(\(CONFIG_PACKAGE_.*\)).*,\1,')" >> >> Is this really doing what it looks like? >> ... < "$(command)" >> This should try to read from a file named like the output of "command" - and >> not the lines of command's output. >> >> I guess, the following approach should do the right thing: >> >> grep CONFIG_PACKAGE tmp/.packagedeps | grep -E > "[ /]$pkg\$" | sed -e >> 's,package-$(\(CONFIG_PACKAGE_.*\)).*,\1,') | while IFS= read -r conf; do >> ... >> done >> > this won't work, because it makes the loop body a subshell, and thus the > assignment of SELECTED will get lost. > > to achieve the goal with minimal effort, adding > > local IFS=$'\n' > > prior to the loop should be sufficient.
I rejected this patch because I did a mistake here. The for loops reading each word and my while loops reading lines. vg Tarek
signature.asc
Description: OpenPGP digital signature
_______________________________________________ Lede-dev mailing list Lede-dev@lists.infradead.org http://lists.infradead.org/mailman/listinfo/lede-dev