Linux脚本实现--help自定义帮助时出现grep额外输出的问题咨询
解决脚本执行
--help时出现grep帮助信息的问题 问题根源
你的脚本里用了echo $1 | grep -q "--help",当传入--help作为参数时,grep会把这个--help当成自己的命令行选项(而非要匹配的字符串),所以grep会输出自身的帮助信息,这就是额外内容的来源。
解决方案
这里有两种简洁的修复方式,推荐第二种,更符合shell脚本的最佳实践:
方案1:让grep区分模式和选项
在grep的参数里加上--,它会告诉grep:后面的内容都是要匹配的模式,不再是命令行选项。修改后的判断语句如下:
if echo "$1" | grep -q -- "--help" then echo "Help for using this script" else echo "Executing my script with arguments:" echo "$1" echo "$2" fi
方案2:直接用shell内置条件判断(推荐)
完全不需要调用外部的grep命令,用shell的[[ ]]条件表达式直接判断参数,更高效也避免了外部命令的选项冲突问题:
if [[ "$1" == "--help" ]]; then echo "Help for using this script" else echo "Executing my script with arguments:" echo "$1" echo "$2" fi
如果之后要扩展更多命令行选项(比如--version),用case语句会更清晰:
case "$1" in --help) echo "Help for using this script" echo "Usage: ./ScriptWithHelp.sh [option] [arg1] [arg2]" echo "Options:" echo " --help Show this help message" ;; *) echo "Executing my script with arguments:" echo "$1" echo "$2" ;; esac
内容的提问来源于stack exchange,提问作者Arianna Angeletti
相关产品推荐
相关产品推荐

