0

在下面的代码中,line是作为命令输出返回的一行字符串。当我运行脚本时,它会为我提供字符串的所有标记,但也会将目录列表附加到它。我真的无法弄清楚我做错了什么。

                    for word in $line
                    do 
                            inner_count=$((inner_count + 1)) 
                            echo $word 
                    done

这是整个代码:

    while read -r line
    do
            if [ "$count" = "2" ]; 
            then
                    inner_count=0
                    #parse each line
                    #if [ "$debug" = "1" ] ; then  printf "%s\n" "$line" > /dev/kmsg ; fi
                    for word in $line
                    do 
                            if [ "$inner_count" = "0" ]; then tmp1="$word" ; fi
                            if [ "$inner_count" = "4" ]; then temp2="$word" ;fi 
                            inner_count=$((inner_count + 1)) 
                    done

            fi
    count=$((count + 1))
    done < <(batctl tg)
4

1 回答 1

2

我能想到的最有可能产生这种情况的问题是存在*in $line,并且外壳正在扩展它(globbing)。您可以使用 禁用通配符set -f

尝试:

set -f   # disable globbing
for word in $line
do 
  inner_count=$((inner_count + 1)) 
  echo "$word"
done
set +f   # re-enable globbing
于 2013-07-27T09:53:06.340 回答