Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 使用temp变量会对数组产生不同的结果_Bash_Macos_Terminal - Fatal编程技术网

Bash 使用temp变量会对数组产生不同的结果

Bash 使用temp变量会对数组产生不同的结果,bash,macos,terminal,Bash,Macos,Terminal,有人能帮我解释一下在向数组中添加元素时temp变量的不同之处吗 #!/bin/bash declare -a finaldirs1 declare -a finaldirs2 declare -a files=("Planes" "Trains" "Automobiles") echo "A)..................................." for el1 in "${files[@]}"; do tmpe=$(printf "1:%s." "${el1}"

有人能帮我解释一下在向数组中添加元素时temp变量的不同之处吗

#!/bin/bash

declare -a finaldirs1
declare -a finaldirs2

declare -a files=("Planes" "Trains" "Automobiles")

echo "A)..................................."
for el1 in "${files[@]}"; do
    tmpe=$(printf "1:%s." "${el1}")
    finaldirs1+=($tmpe)
done
for elA in "${finaldirs1[@]}"; do
    echo "First: " $elA
done

echo "B)..................................."
for el2 in "${files[@]}"; do
    finaldirs2+=$(printf "2:%s." "${el2}")
done
for elB in "${finaldirs2[@]}"; do
    echo "Second: " $elB
done
echo "DONE................................."
简而言之,第二个版本以某种方式将所有元素组合在一起。输出:

A)...................................
First:  1:Planes.
First:  1:Trains.
First:  1:Automobiles.
B)...................................
Second:  2:Planes.2:Trains.2:Automobiles.
DONE.................................
应该是

finaldirs2+=($(printf "2:%s." "${el2}"))
应该是

finaldirs2+=($(printf "2:%s." "${el2}"))

你漏掉了几个括号

#!/bin/bash

declare -a finaldirs1
declare -a finaldirs2

declare -a files=("Planes" "Trains" "Automobiles")

echo "A)..................................."
for el1 in "${files[@]}"; do
    tmpe=$(printf "1:%s." "${el1}")
    finaldirs1+=($tmpe)
done
for elA in "${finaldirs1[@]}"; do
    echo "First: " $elA
done

echo "B)..................................."
for el2 in "${files[@]}"; do
    finaldirs2+=($(printf "2:%s." "${el2}"))
done
for elB in "${finaldirs2[@]}"; do
    echo "Second: " $elB
done
echo "DONE................................."

你看,在一个数组中加上arr+=('element'),而
arr+='element'
只会在字符串中加上
arr
,你漏掉了几个括号

#!/bin/bash

declare -a finaldirs1
declare -a finaldirs2

declare -a files=("Planes" "Trains" "Automobiles")

echo "A)..................................."
for el1 in "${files[@]}"; do
    tmpe=$(printf "1:%s." "${el1}")
    finaldirs1+=($tmpe)
done
for elA in "${finaldirs1[@]}"; do
    echo "First: " $elA
done

echo "B)..................................."
for el2 in "${files[@]}"; do
    finaldirs2+=($(printf "2:%s." "${el2}"))
done
for elB in "${finaldirs2[@]}"; do
    echo "Second: " $elB
done
echo "DONE................................."
你看,附加到数组就像
arr+=('element')
,而
arr+='element'
只会附加到字符串
arr