如果elif,使用大型支票

时间:2018-03-29 09:48:54

标签: linux bash sh

我正在编写一个可以自动使用MySQL的脚本。我不明白如何实现这个:

[^\^#]
MYSQL_RESULT=mysql -u LOGIN -pPASS -D "TABLE_NAME" -e "SQL request";
for i in $MYSQL_RESULT; do
    if [ $i -le 100 ]
        then r_kills = '100';

    elif [ $i -le 500 ]
        then r_kills = '100';

    elif [ $i -le 1000 ]
        then r_kills = '500';

    echo $r_kills;
    fi
done;

1 个答案:

答案 0 :(得分:0)

这是一项无效的作业。在shell中等号前面或后面可能没有空格 - 与我所知道的大多数编程语言相反:

if [ $i -le 100 ]
        then r_kills = '100';

if [ $i -le 100 ]
        then r_kills=100;

请注意,无法区分shell中的数字和文本。单引号和双引号仅用于屏蔽特殊字符,包括空格。

消息

sh: 21: cron.rankme.sh: r_kills: not found

误导我认为,你使用了一些不在路径中的东西,但实际上,分词器已经决定,r_kills = '100'是一个程序调用r_kills有两个参数,'='和'100' 。

第一行 - 不太了解mysql,

MYSQL_RESULT=mysql -u LOGIN -pPASS -D "TABLE_NAME" -e "SQL request";

最有可能是

MYSQL_RESULT=$(mysql -u LOGIN -pPASS -D "TABLE_NAME" -e "SQL request";)

MYSQL_RESULT=($(mysql -u LOGIN -pPASS -D "TABLE_NAME" -e "SQL request";))

创建数组,因为您尝试迭代变量。