我有一个文本文件包含以下信息:
/media/Arc/eo_archive_test/MODIS/L2_LAC_OC/A2006001071000.L2_LAC_OC.x.hdf:2006:365
/media/Arc/eo_archive_test/MODIS/L2_LAC_OC/A2006001084000.L2_LAC_OC.x.hdf:2013:011
/media/Arc/eo_archive_test/MODIS/L2_LAC_OC/A2006001084500.L2_LAC_OC.x.hdf:2005:365
....
我想回显 $f1,其中 $f2 是“2013”,$f3 是“011”。我正在使用以下脚本,但它回显了所有内容。我在这里做错了什么?
file=/media/Arc/eo_archive_test/MODIS/input/all_file_list.txt
while IFS=: read -r f1 f2 f3
do
[ "$f2" = "2013" ] || [ "$f3" = "011" ]
echo $f1
done < "$file"
有什么解决办法吗? 预先感谢您
最佳答案
您需要将测试连接到操作
[[ $f2 == 2013 && $f3 == 011 ]] && echo $f1
或
if [ "$f2" = "2013" ] && [ "$f3" = "011" ]; then
echo $f1
fi
您现在所做的是执行测试命令并忽略退出状态。所以 echo 命令确实对每一行执行。
关于bash - while循环bash脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22229306/