bash/ksh 如果没有给定的参数请添加 echo 添加值

bash/ksh add if no argument given echo add value please

我有这段代码可以使用多个不同的参数执行单个命令:

for ((i = $#; i > 0 ; i--)) ; do
    grep -w -- "" codelist.lst || echo "'' not found"
    shift
done

此脚本为每个参数提供了包含该参数的行的正确输出,或没有找到任何行的指示。

如果用户提供没有参数,我想添加一条消息,例如“请插入一个值”。我该怎么做?

您可以在尝试 运行 循环之前简单地检查 $#

if [[ $# -eq 0 ]] ; then
    echo "Please insert a value."
else
    for ((i = $#; i > 0 ; i--)) ; do
        grep -w -- "" codelist.lst || echo "'' not found"
        shift
    done
fi

零值表示未提供参数。


如果您看重代码的简单性,另一种形式是意识到即使循环本身已执行,零也会导致循环体不 运行,因此您可以执行以下操作:

[[ $# -eq 0 ]] && echo "Please insert a value."
for ((i = $#; i > 0 ; i--)) ; do
    grep -w -- "" codelist.lst || echo "'' not found"
    shift
done