我有两个数组a
和b
,需要在这个for循环中使用正确的bash
语法来比较数组元素:
for ((x=0;x<10;x++)); do
if [ "$a[$x+1]" -gt "$a[$x]" ]; then
$b[x+1]=1
if [ "$a[$x+1]" -lt "$a[$x]" ]; then
$b[x+1]=0
fi
我该如何让
bash
在数组元素a[x+1]
大于a[x]
时,正确地将值1赋给数组元素b[x+1]
?所以如果数组元素
a[1]
大于a[0]
,那么b[1]=1
?更简单的提问方式是:
如何让它知道数组元素1是否大于0?
if [ "$a[1]" -gt "$a[0]" ];
then
echo element 1 greater than element 0
fi
上述代码出现了“意外的文件结尾”错误,似乎缺少一些语法。有人知道这个BASH语法吗?
更新: 这是脚本文件:
#!/bin/bash
declare -a a
declare -a b
readarray a < arraydatafile
for ((x=0;x<5;x++));
do
if [ "${a[$x+1]}" -gt "${a[$x]}" ];
then
b[x+1]=1
fi
done
数组数据文件:
1
2
1
4
5
4
2
8
root@debian:/home/l0l/Documents/# bash脚本
脚本第8行: [: 2 : 需要整数表达式 脚本: 第8行: [: 1 : 需要整数表达式 脚本: 第8行: [: 4 : 需要整数表达式 脚本: 第8行: [: 5 : 需要整数表达式 脚本: 第8行: [: 4 : 需要整数表达式
有人知道确切的语法吗?
'$'
,而且你可以通过${a[$((x+1))]}
或者索引不需要加法的情况下${a[$x]}
(或者对于索引数组${a[x]}
)来访问数组中的值。 - David C. Rankindone
和一个fi
。 - Cyrus