Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
[0]-bash:[:0*1%8:应为整数表达式_Bash - Fatal编程技术网

[0]-bash:[:0*1%8:应为整数表达式

[0]-bash:[:0*1%8:应为整数表达式,bash,Bash,有人能指出输出有什么问题吗 for i in {0..127} ; do echo -n [$i] if [ $i*$j%8 -eq 0 ]; then echo "\n" fi mytool -c "read 0x1540:0xa0:$i*$j" done 我正在尝试将输出格式化为每行包含8项的行 我尝试了下面的建议,并将代码修改为 for i in {0..8} ; for j in {0..16}; do echo -n [$

有人能指出输出有什么问题吗

for i in {0..127} ; do 
    echo -n [$i]
    if [ $i*$j%8 -eq 0 ]; then 
        echo "\n"
    fi
    mytool -c "read 0x1540:0xa0:$i*$j"
done
我正在尝试将输出格式化为每行包含8项的行

我尝试了下面的建议,并将代码修改为

for i in {0..8} ; for j in {0..16}; do 
    echo -n [$i*$j]
    if [[ $i*$j%8 == 0 ]]; then 
        echo
    fi
    mytool -c "read 0x1540:0xa0:$i*$j"
done
在{0..8}中为i;在{0..16}中为j

我希望这是一个嵌套的for循环。我不确定这是否是我在bash中执行嵌套循环的方式

但输出结果并不像我预期的那样

我的输出看起来像

[0]0x3
[1]0x4
[2]0x21
[3]0x1
[4]0x0
[5]0x0
[6]0x4
[7]0x41
[8]0x84
[9]0x80
[10]0x0
[11]0x0
[12]0x3
[13]0x0
[14]0x43
[15]0x49
[16]0x53
[17]0x43
[18]0x4f
[19]0x2d
[20]0x49
[21]0x4e
[22]0x43
[23]0x20
[24]0x0
[25]0x0
[26]0x9
[27]0x3a
[28]0x37
[29]0x34
[30]0x39
[31]0x34
我想要第1行中的[0]到[7] [8] 至第2行中的[15]

等等。

如果你想做数学,请使用

if ((i * j % 8 == 0)); then
根据你的问题描述,我建议重写一下

for i in {0..15}; do
    for j in {0..7}; do
        echo -n "[$((i * 8 + j))]"
        mytool -c "read 0x1540:0xa0:$i*$j"
    done

    echo
done
test命令[是test的别名,而不是语法要求从多个参数构建表达式。这意味着空格对于单独的运算符和操作数至关重要。由于每个部分都是单独的参数,因此还需要引用*以便shell在调用test/[]之前不会将其展开为文件glob

test命令在这里需要7个独立的参数:$i、*、$j、%、-eq和0,然后将这些参数组合到表达式中进行计算。它不会将任意字符串解析为表达式


正如John Kugelman所指出的,在bash中有更简单的方法来完成这样的运算。

这需要[[而不是[按原样工作。使用还需要==而不是-eq.@EtanReisner-请参见上面的注释。$j的值是多少?
    if [ "$i" "*" "$j" % 8 -eq 0 ]; then