我使用'bash'的全新用法。
func(){
echo Dan 38
}
read name age < <(func)
echo "name=$name age=$age"
如何将这些转换成破折号? (实际上它是busybox的shell)
我使用以下行代替read name age < <(func)
func > /tmp/$$
name=`cat /tmp/$$ | awk '{print $1}'`
age=`cat /tmp/$$ | awk '{print $2}'`
rm /tmp/$$
但是,我想知道是否有更好的解决方案?
答案 0 :(得分:0)
修改函数以接受要写入结果的变量的名称(您可以将它们视为指针)。
func () { eval "$1=Dan $2=38"; }
func name age
echo "name=$name age=$age"
这与您的解决方案类似,但其优点是不使用文件或调用awk等外部程序。
func(){ echo Dan 38 }
both=$(func)
name=${both%% *}
age=${both#* }
echo "name=$name age=$age"