请有人告诉我,为什么在追加到一个新数组时,它会将我的值分割成两个数组元素?
这是我的代码,输出如下..。
#!/bin/bash
IFS=$'\r\n' GLOBIGNORE='*' command eval 'toexec=($(cat /root/devops/commands.txt))'
#printf '%s\n' "${toexec[@]}"
dirlist=(`ls /root/devops/files/*`)
toCompress=()
toOutput=()
for fileList in ${dirlist[*]}
do
toOutput+=($(basename ${fileList}));
toCompress+=("${fileList}"$'\n');
done
newOut=()
printf '%s\n' "${toexec[@]}"
for (( i=0; i<${#toexec[@]}; i++ ));
do
newval="${toexec[$i]},${toOutput[$i]}"$'\n';
newOut+=($newval);
done
echo "======"
printf '%s\n' "${newOut[@]}"下面是输出,由=====分隔,顶部是现有数组,底部是新数组。如您所见,它将每个元素放入两个元素中,在gzip和其option,filename之间的单个空间上拆分,例如gzip和-1,a.txt。
输出
gzip -1
gzip -9
======
gzip
-1,a.txt
gzip
-9,b.txt
...
==debug additional info==
--toexec < commands.txt--
gzip -1
gzip -9
=========================
--toCompress < ls--------
=========================
/root/devops/files/a.txt
/root/devops/files/b.txt
----toOutput-------------
a.txt
b.txt
=========================
----newOut---------------
gzip
-1,a.txt
gzip
-9,b.txt
=========================发布于 2022-05-15 22:14:01
因为该值不是双引号,如
newOut+=("$newval")这将向数组中添加一个元素。
https://stackoverflow.com/questions/72252551
复制相似问题