Bash script error: [i: command not found

后端 未结 4 1502
面向向阳花
面向向阳花 2021-01-22 18:03

This program is suppose to accept a number from the user and print that many prime numbers. For some reason the program doesn\'t work. I am new to bash scripting and this is my

相关标签:
4条回答
  • 2021-01-22 18:41
    #!/bin/bash
    #
    # primes
    #
    read -p "Enter a  number: " n
    i=2
    
    for (( i=2; i <= n; i++ ))
    do
        for (( j=2; j*j < i; j++ ))
        do
            if ((i % j == 0))
            then
                echo "no prime, $i divider: "$j
                break
            fi
        done
    done
    

    updated, after realizing (thanks Will Ness), that all primes up to INPUT are searched.

    i needs to run to √(n) only.

    0 讨论(0)
  • 2021-01-22 18:42

    if [i % j == 0]; Should be if [ i % j == 0 ];

    Same for the one on line 18

    0 讨论(0)
  • 2021-01-22 18:46

    You need to place a space after the [ because [ is an application.

    And you can't make calculations between the brackets. You will need to tell bash it needs to calculate the values. So you would need to change line 11 to if (( i % j == 0 )).

    0 讨论(0)
  • 2021-01-22 19:00

    Like the others have said, the [ program needs a space before its parameters, like all programs need a space before their args. This is one reason why I prefer the test builtin to [ with its kludgy syntax requiring a useless ] as the last arg just to make it look pretty and sane.

    if test $((i % j)) = 0; then
       break
    fi
    
    0 讨论(0)
提交回复
热议问题