gpt4 book ai didi

bash - Shell 脚本的 if 条件参数过多

转载 作者:行者123 更新时间:2023-12-02 06:19:49 25 4
gpt4 key购买 nike

我当前的脚本执行以下操作;

它以整数作为命令行参数并从 1 到 N 开始,它检查数字是否可以被 3、5 或两者整除。它只是打印出 3 的 Uc、5 的 Bes 和 3,5 的 UcBes。如果命令行参数为空,它执行相同的操作,但循环转到 1 到 20。

我遇到这个错误“第 11、15 和 19 行的参数太多”。

代码如下:

#!/bin/bash

if [ ! -z $1 ]; then
for i in `seq 1 $1`
do
if [ [$i % 3] -eq 0 ]; then
echo "Uc"
elif [ i % 5 -eq 0 ]; then
echo "Bes"
elif [ i % 3 -eq 0 ] && [ i % 5 -eq 0 ]
then
echo "UcBes"
else
echo "$i"
fi
done
elif [ -z $1 ]
then
for i in {1..20}
do
if [ i % 3 -eq 0 ]
then
echo "Uc"
elif [ i % 5 -eq 0 ]
then
echo "Bes"
elif [ i % 3 -eq 0 ] && [ i % 5 -eq 0 ]
then
echo "UcBes"
else
echo "$i"
fi
done
else
echo "heheheh"
fi

最佳答案

请注意,[ 实际上是 shell 中内置的 test 的同义词(在您的终端中尝试 which [),而不是条件语法像其他语言一样,所以你不能这样做:

if [ [$i % 3] -eq 0 ]; then

此外,始终确保 [, ] 之间至少有一个空格,并且在它们之间检查构成逻辑条件的变量。

求模表达式的语法是用$((...))括起来的,里面的变量名不需要用$作为前缀:

remainder=$((i % 3))
if [ $remainder -eq 0 ]; then

关于bash - Shell 脚本的 if 条件参数过多,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13405893/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com