linux并行执行并获取状态错误



并行执行按预期正常工作。但是我需要得到每个文件的状态。在这里,我需要使用if条件来检查它。这只是一个示例,我的代码中有很多类似的场景。

我是#helpshell脚本的初学者;linux,但实际上我现在很喜欢linux。我希望有一个替代方法或帮助来解决这个问题。谢谢大家。

( echo $FILE_PATH/import_csv_location_data_into_hive.sh; echo $FILE_PATH/import_csv_order_data_into_hive.sh; echo $FILE_PATH/import_csv_order_with_delivery_info_into_hive.sh; ) | parallel bash 
wait
IMPORTED_LOCATIONS_STATUS=$? IMPORTED_ORDERS_STATUS=$? IMPORTED_ORDERS_WITH_DELIVERY_INFO_STATUS=$?

if [[ "$IMPORTED_LOCATIONS_STATUS" == "0" && "$IMPORTED_ORDERS_STATUS" == "0" && "$IMPORTED_ORDERS_WITH_DELIVERY_INFO_STATUS" == "0" ]];
then
echo  "COMPLETED."
exit 0 
else
STATUS="FAILED."
exit 1
fi 

样本代码

在此处输入图像描述

(echo Your-Special-Header; 
echo whoami; 
echo cat nothere 
) | parallel --header : --results all.csv bash -c

其他文件不存在。以下是csv输出:

Seq,Host,Starttime,JobRuntime,Send,Receive,Exitval,Signal,Command,Your-Special-Header,Stdout,Stderr
1,:,1662823208.481,0.001,0,5,0,0,"bash -c whoami",whoami,"root
",
2,:,1662823208.481,0.003,0,0,1,0,"bash -c cat nothere","cat nothere",,"cat: nothere: No such file or directory
"

第7列为Exitval。

如果您只需要知道所有是否完成且没有错误:

(
echo $FILE_PATH/import_csv_location_data_into_hive.sh;
echo $FILE_PATH/import_csv_order_data_into_hive.sh;
echo $FILE_PATH/import_csv_order_with_delivery_info_into_hive.sh;
) | parallel bash
if [[ "$?" == "0" ]]; then
echo  "COMPLETED."
exit 0 
else
STATUS="FAILED."
exit 1
fi 

更短,但可读性较差IMO:

(
echo $FILE_PATH/import_csv_location_data_into_hive.sh;
echo $FILE_PATH/import_csv_order_data_into_hive.sh;
echo $FILE_PATH/import_csv_order_with_delivery_info_into_hive.sh;
) | if parallel bash ; then
echo  "COMPLETED."
exit 0 
else
STATUS="FAILED."
exit 1
fi 

相关内容

最新更新