我的shell脚本出了什么问题

时间:2012-05-27 14:28:17

标签: bash shell shell-exec

我有一个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脚本比较陌生,所以请原谅我的代码我觉得它不好

附加输出的屏幕截图 enter image description here

1 个答案:

答案 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

使用数组而不是字符串。

扩展时引用变量。

相关问题