Shell脚本太多参数if条件

A. *_*lar 1 bash shell terminal

我目前的脚本执行以下操作:

它将整数作为命令行参数,从1到N开始,它检查数字是否可以被三个,五个或两个整除.它简单地打印X为三,Y为五,XY为三,五.如果命令行参数为空.

我有这个错误"第11,15和19行太多的论点".

这是代码:

#!/bin/bash

if [ (statement) ]; then
    for ...
    do
        if [ statement ]; then
            echo "s1"
        elif [ statement2 ]; then
            echo "s2"
        elif [ statement3 ]
        then
            echo "s3"
        else
            echo "$i"
        fi
    done
elif [ statement ]
then
    for ...
    do
        if [ statement ]
        then
            echo ""
        elif [ statement2 ]
        then
            echo ""
        elif [ statement3 ]
        then
            echo ""
        else
            echo "$i"
        fi
    done
else
    echo ""
fi
Run Code Online (Sandbox Code Playgroud)

sam*_*hen 6

请注意,[它实际上是testshell中内置函数的同义词(which [在终端中尝试),而不是像其他语言一样的条件语法,因此您不能这样做:

if [ [$i % 3] -eq 0 ]; then
Run Code Online (Sandbox Code Playgroud)

此外,始终确保有之间至少有一个空格[,]以及包含在它们之间的逻辑条件检查的变量.

评估表达式(如modulo)的语法是enclosure by $((...)),并且里面的变量名称不需要加前缀$:

remainder=$((i % 3))
if [ $remainder -eq 0 ]; then
Run Code Online (Sandbox Code Playgroud)