捕获从另一个shell脚本调用的shell脚本的输出

时间:2011-07-06 06:40:25

标签: shell redirect

我有一个名为a.sh的脚本,其内容为:

//a.sh:

#!/bin/bash
temp=0
while [ "$temp" -ne 500 ]
do
    echo `date`
    temp=`echo "$temp+1" | bc`
    sleep 1
done
----------------------------------

另一个名为b.sh的脚本,其内容为:

// b.sh:

#!/bin/bash

`a.sh`

exit
----------------------------------

当我单独执行a.sh时,我能够看到输出..但是,当我执行b.sh时,我无法在控制台上看到输出..(i尝试了几次 - 重定向a.sh的输出 - 但没有成功)。

所以,我需要的是重定向,这将使我能够在控制台上执行a.sh时查看b.sh内容的输出。

谢谢, 拉维。

4 个答案:

答案 0 :(得分:5)

`a.sh`
<{1>}中的

表示获取a.sh的输出并将其用作带参数的命令。你只需要在b.sh中执行a.sh

b.sh而不是

$A_SH_PATH/a.sh

答案 1 :(得分:0)

这应该“正常”。

你的$ PATH上有a.sh吗?

如果没有,您需要使用路径调用它,例如./a.sh

答案 2 :(得分:0)

尝试从b.sh中删除反引号,如下所示。 这适合我。

#!/bin/bash

a.sh

exit

答案 3 :(得分:0)

a.sh中的以下几行:

    echo `date`
    temp=`echo "$temp+1" | bc`

可以改写为:

    date
    : $(( temp += 1 ))

似乎你遇到的根本问题是对反引号的误解,你应该理解为什么“echo`date`”(几乎)与“date”完全相同(它们仅在空格上有所不同)。我对第二行的改变只是个人偏好(它也更有效率)。