1

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

附上输出截图 在此处输入图像描述

4

1 回答 1

4
#!/bin/bash
arry=(/home/developer/.ssh/*.pub)

ARR=(${arry[@]%%.pub})    # strip the extensions

echo "${#ARR[@]}"

for pri in "${ARR[@]}"
do
    echo "$pri"
done

使用 glob 而不是ls.

使用数组而不是字符串。

扩展变量时引用变量。

于 2012-05-27T14:49:57.670 回答