我正在开发一个函数,用于分析执行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"