我在Linux中有一个名为test.txt
的文件。内容如下。
test.txt
['table1']
['table2']
['table3']
['table4']
['table5']
and so on
现在我有一个while
语句循环test.txt
文件可以完成一些工作。
While
声明如下:
while read -r line; do
table=${line:2:-2}
validateTable=$(hive --database history -e "SHOW TABLES LIKE '$table'")
if [[ -z $validateTable ]]; then
/home/"$USER"/import.py "${table}"
else
/home/"$USER"/append.py "${table}"
fi
done < < test.txt
在此while
语句validateTable
中,检查hive
中是否存在表格。
如果不存在则会调用import.py
脚本
如果存在,它将调用append.py
脚本。
现在while语句工作正常。我得到了预期的结果。
要求:
我需要的是我要并行调用while statement
。我的意思是我希望while
同时运行10次。
什么是最好的解决方案。
我发现我们可以使用xargs --max-procs
选项,但无法弄清楚如何使用它。
答案 0 :(得分:1)
xargs
需要运行一个命令,这意味着您需要将循环体放入shell脚本中。类似的东西(称之为myscript
)
#!/bin/bash
table=${1:2:-2}
validateTable=$(hive --database history -e "SHOW TABLES LIKE '$table'")
if [[ -z $validateTable ]]; then
/home/"$USER"/import.py "${table}"
else
/home/"$USER"/append.py "${table}"
fi
然后运行类似
的内容xargs --max-procs 10 myscript < test.txt