内循环`for`后变量为空

时间:2014-03-24 12:32:17

标签: bash variables for-loop

我知道管道正在进行,但需要一些帮助...... 得到以下代码:

#!/bin/bash
first=""
second=""
for item1 in $(ls *.o)
do
    first=`nm $item1 | grep -e '\<U\>' | awk '{print2}'`
    for item2 in $(ls *.o)
    do
        second=`nm $item2 | grep -e '\<T\>' | awk '{print3}'`

        if [ "$first" == "$second" ]; then
            echo "$item1 => $item2 ($second)"
        else
            echo "Error!"
        fi
    done 
done 

脚本执行后,我收到空的$ second(在括号中):

print_recursive.o => print_recursive.o ()
print_recursive.o => recfun.o ()
print_recursive.o => recursive.o ()
print_recursive.o => timeout.o ()

你介意按正确的顺序重写这段代码吗?提前谢谢。

1 个答案:

答案 0 :(得分:3)

始终努力想出一个最小的例子。这个问题与循环无关。

如果变量有问题,请检查设置变量的命令。在这种情况下:

second=`nm $item2 | grep -e '\<T\>' | awk '{print3}'`

awk命令不执行任何操作。我猜你的意思是{print $3},虽然这也无法解决问题,因为nm会返回多个匹配的行。你想比较两套吗?如果是,请先sort