gpt4 book ai didi

linux - 意外标记附近的语法错误

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:24:55 25 4
gpt4 key购买 nike

这是我对 n 个数进行冒泡排序的代码:

#!/bin/bash

echo -n "Input n, the number of numbers"
read N
declare -a array[N]
echo -e "Input the elements, press enter after each element"
for i in seq 1 $N
do
read array[$i]
done

swap1()
{ # for swapping two numbers, we are employing bubble sort
local temp = ${array[$1]}
array[$1] = ${array[$2]}
array[$2]=$temp
return
}

numb_elements=${#array[@]}
let "comparisons = $numb_elements - 1"

count=1

while [ "$comparisons" -gt 0]
do
index =0

while[ "$index" -lt "$comparisons" ];do
if [ ${array[$index]} \> ${array[ 'expr $index + 1']} ]
then
swap1 $index 'expr $index + 1'
fi
let "index += 1" # Or, index+=1 on Bash, ver. 2.1 or newer
done

let "comparisons -=1"
echo
echo "$count: ${array[@]}
echo

let "count +=1"
done
exit 0

这段代码有两个问题:

  1. 输入数组只需要 3 个数字
  2. 然后我在第 42 行收到一个错误,说命令的语法错误

我试过 while [] ;做,但它不起作用。

这只是我一直在尝试 bash 语法的一天。

最佳答案

而且不写

for i in seq 1 $N

在集合 {"seq","1",$N} 上迭代 i,但是输入

for i in $(seq 1 $N)

将命令的结果作为代码的一部分插入。

您忘记了这一行的结束语:

echo "$count: ${array[@]}

而且嵌套循环的代码缩进很严重,因此阅读和调试起来有点困难。

关于linux - 意外标记附近的语法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9757490/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com