根据条件在Linux中创建新文件

时间:2017-10-10 23:30:16

标签: linux bash shell

我在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

在上面的表中table1table2已经存在。

所以我想要两个文件

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
  

1 个答案:

答案 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