while循环之外的命令行工作,但不在bash中

时间:2015-11-20 21:34:59

标签: linux bash shell gentoo

我正在开发一个函数,用于分析执行emerge --pretend $package的结果,并在 make.conf 中设置 USE 标志,然后执行emerge $package。示例代码如下所示,在第5行,emerge --pretend工作正常,但在第13行,我收到错误emerge: command not found

即使我删除了第8行和第15行之间的括号,没有任何改变,同样的错误,任何想法?如果将emerge替换为echo,则错误为echo: command not found。似乎while循环的外部和内部都不在同一个shell中。为什么以及如何解决这个问题?

非常感谢!

1    #/bin/bash
2    function emgRecursion() {
3        local result
4        local str
5        result="$(emerge --pretend "="$1 | grep "\[ebuild")"
6        while read -r line
7        do  ( 
8            if [[  $line = *"USE=\""* ]]; then
9                echo "====="
10           else
11               str="${line#*"] "}"
12               str="${str%%" "*}"
13               emerge --pretend "="$str
14           fi
15           ) </dev/tty
16       done <<<"$result"
17    }
18    emgRecursion "sys-cluster/ceph-0.94.4"

0 个答案:

没有答案