Answers:
首先,几乎不要使用${ARRAY[*]}
带引号或不带引号的。在几乎所有情况下,您都应该使用"${ARRAY[@]}"
(加上双引号)。其次,应使用小写或大小写混合的变量名,以避免意外使用对Shell或从其中运行的程序之一具有特殊意义的名称。
现在,您的实际问题:你想运行watch
一次,并把它传递数组中元素的完整列表,或者你想为每个元素一次一个单独运行,或运行的一个单独的实例watch
为每一次全部?要使用完整列表运行一次,请使用:
watch "${array[@]}"
要一次在每个元素上单独运行它,请使用:
for element in "${array[@]}"; do
watch "$element"
done
要一次在所有元素上单独运行它,&
请避免watch
在开始下一个命令之前等待每个命令完成:
for element in "${array[@]}"; do
watch "$element" &
done
wait # this waits for all of the `watch` processes to exit before continuing through the script