Shell脚本中将./替换为$PWD的实现错误求助
问题解决:替换路径中的./为$PWD
原脚本存在三个明显错误,导致"Wrong substitution"报错:
- 赋值语句多了多余空格:
MODIFIED_APP_FOLDER= =应改为单等号赋值 - 条件判断中比较运算符前后缺少空格(bash要求条件运算符前后必须有空格)
- 原条件判断用了赋值符号
=而非比较符号==
修正后的基础版本脚本
APP_FOLDER=./service MODIFIED_APP_FOLDER=$([[ $APP_FOLDER == './'* ]] && echo "${APP_FOLDER/'./'/"$PWD"}" || echo "$PWD/$APP_FOLDER") # 验证结果 echo $MODIFIED_APP_FOLDER
更简洁的优化版本(无需条件判断)
利用bash的前缀参数展开特性,直接替换开头的./,完全覆盖三种场景:
- 字符串以
./开头(如./service) - 字符串仅为
./ - 字符串不以
./开头(如service)
APP_FOLDER=./service MODIFIED_APP_FOLDER="${APP_FOLDER/#./$PWD}" echo $MODIFIED_APP_FOLDER
测试场景验证
- 当
APP_FOLDER='./',输出为当前工作目录路径($PWD的值) - 当
APP_FOLDER='service',输出为$PWD/service - 当
APP_FOLDER='./api/v1',输出为$PWD/api/v1
内容的提问来源于stack exchange,提问作者Sergey
相关产品推荐
相关产品推荐

