bash shell传递包含斜杠的变量到sed

2019-04-19  本文已影响0人  CyanStone

遇到如下代码,ci集成接入matrix-apk-canary的时候,需要把配置文件的相对路径变成绝对路径,写如下代码:

#!/bin/bash
WORKSPACE="/Users/shipeiqing/StudioProjects/aweme"
sed -i '' "s/tools\/matrix\/mntool\/arm-linux-androideabi-nm/$WORKSPACE\/tools\/matrix\/mntool\/arm-linux-androideabi-nm~g" app/build/outputs/matrix/matrix_apk_checker_config.json

运行时会报出如下错误:

sed: 1: "s/tools\/matrix\/mntool ...": bad flag in substitute command: 'U'

这个错误的原因就是在于传递的变量里包含里斜杠,而没有对它做转义处理。
解决这个问题对思路有两个:

WORKSPACE="\/Users\/shipeiqing\/StudioProjects\/aweme"
sed~$var~replace_string~g

改成如下后,执行通过:

#!/bin/bash
WORKSPACE="/Users/shipeiqing/StudioProjects/aweme"
sed -i '' "s~tools/matrix/mntool/arm-linux-androideabi-nm~$WORKSPACE/tools/matrix/mntool/arm-linux-androideabi-nm~g" app/build/outputs/matrix/matrix_apk_checker_config.json
上一篇下一篇

猜你喜欢

热点阅读