Bash 是否删除grep在变量中生成的空行?

Bash 是否删除grep在变量中生成的空行?,bash,variables,grep,lines,string,Bash,Variables,Grep,Lines,String,我正在寻找一种方法来实现这一点: 我希望它给出他找到的所有匹配项,如果他找不到任何东西,就不要空行 lines=($(cat fee.file | awk '{print $1}')) for line in ${lines[@]}; do dropper="$(cat foo.file | grep ${checkvar[$nr]})" ((nr++)) done echo $dropper 它给了我: 4594 4044 4950 4503 现在我只想在有数字

我正在寻找一种方法来实现这一点: 我希望它给出他找到的所有匹配项,如果他找不到任何东西,就不要空行

lines=($(cat fee.file | awk '{print $1}'))
for line in ${lines[@]}; do

dropper="$(cat foo.file | grep ${checkvar[$nr]})"

((nr++))
done

echo $dropper
它给了我:

 4594

 4044


 4950




 4503
现在我只想在有数字的时候做一个动作,而当它是空的时候我什么也不想做。 所以我把它添加到for循环中

if ! [[ -z $dropper ]]; then
echo $dropper
fi
但这不起作用。它仍然在我的屏幕上打印空行! 不知何故,即使grep找不到什么东西,它也会用一些东西填满$dropers。我甚至尝试用sed、grep或awk删除白线。。但没有任何帮助

如何仅在$droppers实际已填充时激活if语句

foo.file中只填充了很多行,其中只有数字。。比如:

4594
4595
4597
2489
3949

fee.file将具有相同的数字,但约有10%的数字与foo.file中的数字匹配

以下内容将打印fee.file中每个输入数字的foo.file中的匹配行。你可能正在尝试做一些更复杂的事情,但这在你的帖子中并不清楚;如果是这样,请告诉我

lines=($(cat fee.file | awk '{print $1}'))

for line in ${lines[@]}; do
    grep $line foo.file;
done; 
那么:

#!/bin/bash
while read number remainder
do
  dropper="$(grep -w $number foo.file)"
  if [ $? -eq 0 ]; then
    echo "$dropper found"
  else 
    echo "$number not found"
  fi
done < "fee.file"
我的输出是:

1 found
101 found
201 found
301 found
401 found
501 found
601 found
701 found
801 found
901 found
1001 not found

在您的例子中,您可以将do循环替换为${lines[@]}中的数字的
;做完成

你用的是哪个外壳?你能发布一些关于
foo.file
的例子和一个工作脚本吗?我认为它是debian版本7,而foo文件中只填充了一长串数字。没什么特别的。你能发布
echo$SHELL
并发布结果吗?它没有给我任何东西。。只有/bin/bashSo,您使用的是Bash作为shell;-)谢谢嗨,谢谢你的回复!,你就快到了。我基本上想要的是比较两个文件中的reandom数字,并给出两个文件中的一次。出于更复杂的原因,为了提高速度,我想使用grep直接grep匹配的数字并打印出来。最后,我想要一个if语句,如果他找到匹配的数字,就执行action1,如果他找不到匹配的数字,就执行action2。OMG!它起作用了。。你不知道我吃这个有多久了我爱你。。谢谢你能解释一下美元吗-你知道我是怎么把一个变量设为空的吗。。。我真的不确定我是否在一次尝试中使用了右十八,如果我的整个[$?-eq 0]$$stuf对我来说是新的。如果“do action1”或“do action2”?
$?
包含最后一个命令的退出代码,我如何将其转换为。因此,如果
grep
失败,
$?
为非零。我已经将代码更改为
if。。。然后。。。else
construct。使用
unset var
取消设置变量
var
;-)
1 found
101 found
201 found
301 found
401 found
501 found
601 found
701 found
801 found
901 found
1001 not found