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