我正在尝试获取一个脚本来反转主菜的顺序(是的,我知道“tac”命令已经执行此操作)我的脚本如下,打印数组值然后跟着新行的打印 F 行不会打印我的换行符,这真的很烦人。
我尝试将其分离出来并在紧接着该行的后面加上 printf“\n”来打印数组索引值,但这似乎也不起作用。
#!/bin/bash
a=()
while read line; do
a+="$line"
done
for ((i = 0 ; i <= ${#a[@]} ; i++)); do
printf "${a[$i]}\n"
done
答案1
问题不在于你的printf
陈述,而在于你阅读时的作业——你混淆了追加到数组和分配元素的值。要附加到数组,您需要使用a+=("$line")
。如果您想使用不带括号的语法,则需要指定要更改的元素的索引,例如a[5]="$line"
。
您可以在以下位置找到有关数组的更多示例此 Stackovewflow 文档链接(检查“数组修改”部分)。
还请注意,您的脚本不会以相反的顺序打印行。要做到这一点,您需要反转循环for
以从数组末尾迭代到开头。