我试图在bash shell脚本中填充数组类型的全局变量。我在函数中使用了subshell,我现在明白,在代码执行之后,所有内容都将丢失,并且全局声明的var未使用新值进行设置。现在我正在尝试一种不同的方法,但似乎仍然没有奏效。这是代码:
declare -a arr
let i=1
function availableDevices {
while read line #get list of devices
do
if [ -n "$line" ] && [ "`echo $line | awk '{print $2}'`" == "device" ]
then
device="`echo $line | awk '{print $1}'`"
echo "Add $device"
arr[i]="$device"
let i=$i+1
fi
done < <(adb devices)
echo "devices: ${arr[*]}"
}
当我调用此函数时,会出现此错误:
name.sh: cannot make pipe for process substitution: Function not implemented
我是脚本新手,可能是自我解释但我不明白。 HOw可以实现这个功能吗?感谢
答案 0 :(得分:1)
确保实际上bash,而不是sh,指定为hash-bang,因为似乎消息来自使用&#34;&lt; &lt;(&#34;基础。 也可以尝试:line =&#34; a b c&#34 ;; set - $ line;回声2 看看是否可以在你的脚本中使用,而不是echo $ line | awk ...,或者,&#34;这里是字符串&#34;通常优于回声的管道输出。这里的字符串看起来像这样(例子): rev&lt;&lt;&lt;测试