我在Linux
中有一个文件。该文件中包含表名。
现在我想检查这个文件并根据条件创建文件。
table=${}
validateTable=$(hive --database "${hivedb}" -e "SHOW TABLES LIKE '$table'")
if [[ -z $validateTable ]]; then
Add to file New_imports
else
Add to file Already exists
fi
例如:
该文件包含
table1
table2
table3
table4
在上面的表中table1
和table2
已经存在。
所以我想要两个文件
1)New_imports表不存在 2)已存在的表存在
new_imports
table3
table4
already exists
table1
table2
如何实现我的结果
#!/bin/bash while read table ; do table=${1:1:-1} validateTable=$(hive --database "${hivedb}" -e "SHOW TABLES LIKE '$table'") if [[ -z $validateTable ]]; then echo "$table" >> New_imports else echo "$table" >> Already_exists fi done < tableFile
答案 0 :(得分:2)
#!/bin/bash
while read table ; do
table=$(echo "$table" | sed 's/[][]//g;s/'"'"'//g')
validateTable=$(hive --database "${hivedb}" -e "SHOW TABLES LIKE '$table'")
if [[ -z $validateTable ]]; then
echo "$table" >> New_imports
else
echo "$table" >> Already_exists
fi
done < tableFile
应该开始吧。使这个防弹,所以它可以接受参数将需要做更多的事情。
管理输出文件可能需要一些工作。请注意,使用>>
表示附加,因此每次运行时,您都需要删除这些文件或管理它们。我建议在文件名中嵌入日期时间戳,如
echo "$table" >> new_imports.$(/bin/date +%Y-%m-%d.%H:%M)
此外,我无论如何都不能使用hive
对此进行测试,因此这是一般解决方案。
IHTH