这是关于bash脚本的第一个stackoverflow问题。我是这种语言的初学者,所以要善待我。
我正在尝试编写一个比较脚本。我试图将所有输出存储到变量中,但只存储最后一个。
示例代码:
me:1234567
you:2345678
us:3456789
我的代码:
#!bin/bash
while read -r forName forNumber
do
aName="$forName"
echo "$aName"
aNumber="$forNumber"
echo "$aNumber"
done < "exampleCodeFile.txt"
echo "$aNumber"
第一次,一切都会被打印出来。但是,第二个回声只打印出“3456789”,但不会再打印出所有数字。与$ aName相同。这是一个问题,因为我有另一个文件,我存储了一堆数字来比较$ aNumber,使用上面列出的相同方法,称为$ aMatcher,包括:
aMatcher:
1234567
2345678
3456789
所以如果我试图进行比较:
if [ "$aNumber" == "$aMatcher" ]; then
echo "match found!"
fi
预期输出(使用bash -x“scriptname”):
'['1234567 == 1234567']'
echo "match found!"
实际输出(使用bash -x“scriptname”):
'['3456789 == 3456789']'
echo "match found!"
当然我的最终产品会列出所有比赛,但我希望在尝试其他任何事情之前解决我当前的问题。谢谢!
答案 0 :(得分:1)
运行以下代码时
aNumber="$forNumber"
您为文件$aNumber
的每一行覆盖变量exampleCodeFile.txt
而不是附加。
如果您确实想要追加值,请将上面的行更改为
aNumber="$aNumber $forNumber"
在与$aMatcher
匹配时,您还必须使用for / while循环来遍历$aNumber
和$aMatcher
中的每个值。