我在下面创建了一个shell脚本,用于检查文件out.txt是否包含任何带有文本" Billing_20160210"的行。我在正则表达式部分中得到错误,该错误表明" [[:not found"。不确定我是否遗漏了什么。任何帮助将不胜感激。
#!/bin/bash
bq ls test:Dataset_test > out.txt
cat out.txt | while read LINE
do
if [ LINE = *"Billing_20160210"* ];
then
echo "Processing $LINE"
fi
done
编辑无效:
#!/bin/bash
bq ls geotab-bigdata-test:JS_test > out.txt
cat out.txt | while read LINE
do
if [[ $LINE == *"DailyBillingTest_20160210"* ]];
then
echo "Processing $LINE"
fi
done
答案 0 :(得分:1)
不要使用shell循环逐行过滤文件。在此处使用grep
作为过滤器:
grep 'Billing_20160210' out.txt | while read -r line ; do
echo "processing ${line}"
done
甚至没有临时文件:
bq ls test:Dataset_test | grep 'Billing_20160210' | while read -r line ; do
echo "processing ${line}"
done