在脚本中访问数组中的元素

时间:2019-02-22 08:15:31

标签: arrays shell for-loop parameters

我正在尝试在bash脚本中“一一打印”所有参数。
我想运行的示例:
    ./myscript您好所有朋友
并查看以下结果:

 hello  
 all  
 friends.  

我写了下面的代码:

#!/bin/bash
li=$@
for(( j=0;j<$#;j++));
do
    echo ${li[$j]}
done

当我运行代码时,它会立即打印所有参数的错误:

hello all friends

我知道我可以通过将for结构更改为以下格式来做到这一点:

#!/bin/bash
li=$@
for j in $li;
do
    echo $j
done

但是我不想更改上面的代码。
请帮帮我。
先感谢您。

2 个答案:

答案 0 :(得分:2)

您可以使用echo -n选项编写,以跳过最后的换行符。

echo -n ${li[$j]}

在此处检查docs

答案 1 :(得分:1)

尝试一下:

#!/bin/bash
li=$@
for(( j=0;j<$#;j++)); do
    printf '%s\n' ${li[$j]}
done

在这里您可以找到有关格式化的一些信息: https://wiki.bash-hackers.org/commands/builtin/printf