如何在Bash脚本中判断输入是否匹配指定字符串参数
问题解决办法
核心原因
- Bash 中函数的位置参数和脚本全局的位置参数是相互独立的,你在调用
myFunction时没有把脚本接收到的命令行参数传递给函数,函数内部的$1、$2默认都是空值,自然匹配不到--log - 你示例的调用命令只给脚本传了1个
--log参数,就算把参数传入函数,函数内判断$2也不可能匹配到值,应该改为判断$1
修复后代码
#!/bin/bash # lets call this script.sh myFunction() { # 匹配函数接收的第一个参数 if [[ $1 == '--log' ]]; then echo "hello world" >> file.log else echo "Unknown argument" fi } # 调用函数时将脚本收到的所有参数传递进去 myFunction "$@"
验证效果
执行bash script.sh --log后,即可在当前目录下生成file.log文件,成功写入hello world内容。如果后续需要支持多参数传入的场景,再对应调整函数内的位置参数判断序号即可。
内容的提问来源于stack exchange,提问作者badman
相关产品推荐
相关产品推荐

