2011-07-06 138 views
2

我有一个剧本叫a.sh,其内容是引用:捕获一个shell脚本的输出是从另一个shell脚本

//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时,我无法看到控制台上的输出..(我尝试了几次 - 重定向输出a.sh - 但没有成功)。

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

谢谢, Ravi。

+0

有人请重新格式化,这是不可读的。 – themel

回答

5
`a.sh` 
b.sh手段

采取a.sh的输出,并把它作为带有参数的命令。你只需要在b.sh执行a.sh

​​,而不是

`a.sh` 
+0

现在很容易,我们可以真正阅读这个问题:-) – Szocske

+0

非常感谢澄清..这只是意味着,我对反引号的理解是错误的..感谢您的启发 – Ravishankar

+0

非常感谢澄清..所以,这意味着我对反引号的理解不正确。谢谢您的帮助。 – Ravishankar

0

这应该“只是工作”。

您的$ PATH上是否为a.sh?

如果不是,则需要用路径调用它,例如, ./a.sh

+0

a.sh以某种格式输出日期,在b.sh中他正在做:'$(a.sh)',它将取出日期的输出并尝试执行它。 –

+0

如果格式正确,可以看到更多内容:-)放下反引号,或者回显'./a.sh' – Szocske

+0

非常感谢您的澄清..所以,这意味着我对反引号的理解不正确。谢谢您的帮助。 – Ravishankar

0

尝试从b.sh取出后引号像下面。 这对我有用。

#!/bin/bash 

a.sh 

exit 
+0

非常感谢澄清..所以,这意味着我对反引号的理解是不正确的。谢谢您的帮助。 – Ravishankar

0

在a.sh下面几行:

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

可以改写为:

 
    date 
    : $((temp += 1)) 

看来你是有问题的根源是反引号的误解,你应该明白为什么“echo ` date `”(几乎)与“date”完全一样(它们只有空白)。我对第二行的改变只是个人喜好(它也更有效)。

+0

非常感谢您的澄清..所以,这意味着我对反引号的理解是不正确的。谢谢您的帮助。 – Ravishankar

相关问题