我的depends
中有$PATH
个文件:
#!/bin/bash
k=0
for i in "$@"
do
DP[k]="nodejs-$i"
k=$((k+1))
done
echo $DP
我跑depends js kd
并返回:
nodejs-js
这令我感到惊讶,因为我认为我得到的结果将是:
nodejs-js nodejs-kd
因为循环是为了向DP
形式的nodejs-$i
数组添加新元素,其中$i
是我在运行时提供给depends
脚本的输入它。我尝试过使用这个依赖脚本:
#!/bin/bash
DP=()
for i in "$@"
do
DP+=("nodejs-$i")
done
echo $DP
但它返回了完全相同的结果,js kd
输入(即输出为nodejs-js
)。
答案 0 :(得分:3)
您的脚本正确地将元素添加到数组中,检查如何读取下面的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"
- 编辑 - 请注意,鼓励新应用程序使用printf而不是echo。
有趣=> 默认情况下, for 语句会循环播放脚本的参数。
测试:
$ ./depends js kd
DP array size is 2
nodejs-js nodejs-kd
答案 1 :(得分:1)
问题在于Bash会将$DP
视为${DP[0]}
。你需要
echo "${DP[@]}"