繁体   English   中英

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

[英]bash/ksh add if no argument given echo add value please

我有使用多个不同的 arguments 执行单个命令的代码:

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

对于每个参数,此脚本为我提供包含该参数的行的正确 output,或者指示未找到任何行。

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

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

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

零值意味着没有提供 arguments。


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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM