bash脚本,从另一个shell执行shell并将结果分配给变量

时间:2014-07-12 01:16:16

标签: linux bash shell

我有这个遗留删除脚本脚本,它正在远程应用程序上执行一些删除工作。 处理完删除后,它将返回#completed successfully#或将返回

#
    *nothing more to delete*
    *Program will exit*
#

我想分配其输出并执行删除脚本,只要其输出为" completed successfully"。

我无法将脚本的结果分配给变量。我正在从文件夹X运行shell脚本,而删除脚本在文件夹Y中。 除了下面的脚本,我也尝试过:

response=$(cd $path_to_del;./delete.sh ...)

我无法完成这项工作。

#!/bin/bash
path_to_del=/apps/Utilities/unix/
response='completed successfully'

counter=1
while [[ $response == *successfully*  ]]
do
         response= working on batch number: $counter ...
         echo $response
         (cd $path_to_del;./delete.sh   "-physicalDelete=true") > $response

         echo response $response
         ((counter++))
done

echo deleting Done!

1 个答案:

答案 0 :(得分:2)

将输出从子shell传递到更高级别shell的一般方法如下:

 variable="$(command in subshell)"

read -t variable < <(command)

因此对脚本的修改可能如下所示:

response="$(cd $path_to_del;./delete.sh   "-physicalDelete=true")"

cd $path_to_del
response="$(./delete.sh   "-physicalDelete=true")"

此行将失败并需要修复:

response= working on batch number: