我的目录中有这个depends
文件$PATH
:
#!/bin/bash
k=0
for i in "$@"
do
DP[k]="nodejs-$i"
k=$((k+1))
done
echo $DP
Run Code Online (Sandbox Code Playgroud)
我跑了depends js kd
,它返回了:
nodejs-js
Run Code Online (Sandbox Code Playgroud)
这让我感到惊讶,因为我认为我会得到的结果是:
nodejs-js nodejs-kd
Run Code Online (Sandbox Code Playgroud)
因为循环的目的是向DP
表单数组添加新元素nodejs-$i
,其中是我运行脚本时$i
提供给脚本的输入。depends
我尝试使用此依赖脚本来代替:
#!/bin/bash
DP=()
for i in "$@"
do
DP+=("nodejs-$i")
done
echo $DP
Run Code Online (Sandbox Code Playgroud)
但它返回了与输入完全相同的结果js kd
(即输出是nodejs-js
)。
您的脚本正确地将元素添加到数组中,请检查下面如何读取 DP 数组。
尝试一下:
#!/bin/bash
k=0
for i
do
DP[k]="nodejs-$i"
k=$((k+1))
done
printf "DP array size is %d\n" "${#DP[@]}"
printf "%s " "${DP[@]}"
printf "\n"
Run Code Online (Sandbox Code Playgroud)
--edited-- 请注意,鼓励新应用程序使用 printf 而不是 echo。
有趣 =>默认情况下,for语句循环遍历脚本的参数。
考试:
$ ./depends js kd
DP array size is 2
nodejs-js nodejs-kd
Run Code Online (Sandbox Code Playgroud)