我有一个shell脚本,它有一个for循环,用于打印数组元素的值。 数组大小为2但是当使用该数组运行for循环时,我没有得到正确的输出。
这是shell脚本:
#!/bin/bash
arry=$(ls /home/developer/.ssh/ | grep "\.pub")
declare -a ARR
i=0
for key in $arry
do
ARR[i]=$(echo $key | sed 's/.pub//g')
i=$((i+1))
done
echo ${#ARR[@]}
## the below for loop is not iterating as expected
for pri in $ARR
do
echo $pri
done
现在而不是提供输出
2
a
heroku
上面的代码产生:
2
a
上面的shell代码出了什么问题?
我对shell脚本比较陌生,所以请原谅我的代码我觉得它不好
附加输出的屏幕截图
答案 0 :(得分:4)
#!/bin/bash
arry=(/home/developer/.ssh/*.pub)
ARR=(${arry[@]%%.pub}) # strip the extensions
echo "${#ARR[@]}"
for pri in "${ARR[@]}"
do
echo "$pri"
done
使用globs代替ls
。
使用数组而不是字符串。
扩展时引用变量。