我知道管道正在进行,但需要一些帮助...... 得到以下代码:
#!/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 ()
你介意按正确的顺序重写这段代码吗?提前谢谢。
答案 0 :(得分:3)
始终努力想出一个最小的例子。这个问题与循环无关。
如果变量有问题,请检查设置变量的命令。在这种情况下:
second=`nm $item2 | grep -e '\<T\>' | awk '{print3}'`
awk
命令不执行任何操作。我猜你的意思是{print $3}
,虽然这也无法解决问题,因为nm
会返回多个匹配的行。你想比较两套吗?如果是,请先sort
。