我想做这样的事情:
COMMANDS='"ls /" "df ~" "du -hs ~/Devel/"'
for i in $COMMANDS; do
echo $i
done
结果将是:
ls /
df ~
du -hs ~/Devel/
但是我找不到适合空格的正确语法。
最佳答案
COMMANDS=("ls /" "df ~" "du -hs ~/Devel/")
for i in "${COMMANDS[@]}"; do
echo "$i"
done
这使用数组来存储命令。此功能在
ksh
和zsh
中也可用,但在sh
中不可用。数组的行为类似于
"$@"
参数数组。在for
上应用"${ARRAY_NAME[@]}"
循环(引号很重要)将为您连续提供每个项目。如果您省略引号,则它们都将被混在一起并分割为IFS
环境变量(默认为'\t'
,'\n'
和' '
)中存在的分隔符。关于重击带空格的循环,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32784068/