标记化时,bash脚本也会提供目录列表

时间:2013-07-27 09:43:32

标签: bash

在下面的代码中,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)

1 个答案:

答案 0 :(得分:2)

我能想到的最可能出现的问题是*中有$line,而shell正在扩展(全局)。您可以使用set -f禁用通配。

尝试:

set -f   # disable globbing
for word in $line
do 
  inner_count=$((inner_count + 1)) 
  echo "$word"
done
set +f   # re-enable globbing