美文网首页
bash shell传递包含斜杠的变量到sed

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

作者: CyanStone | 来源:发表于2019-04-19 11:31 被阅读0次

遇到如下代码,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'

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

    1. 传递变量对时候就做转义,把变量变成以下可以通过:
WORKSPACE="\/Users\/shipeiqing\/StudioProjects\/aweme"
  • 2 使用~来替代sed工具对分隔符:
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

相关文章

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

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

  • Linux - Bash - Shell文件包含

    和其他语言一样,Shell 也可以包含外部脚本。这样可以很方便的封装一些公用的代码作为一个独立的文件。Shell ...

  • linux笔记之一:bash

    什么是shell,什么是bash Shell是人和机器交互的中间层,接受用户的输入并传递到kernel,通过ker...

  • chapter 3.基本的bash shell命令

    基本的bash shell命令 启动shell 大多数Linux默认的shell都为GNU bash shell/...

  • Homebrew相关问题

    查看当前shell echo $SHELL zsh切换bash chsh -s /bin/bash bash切换z...

  • shell & bash基础命令及巧用

    shell与bash脚本的区别shell是Linux基础命令解释器bash(Bourne Again shell)...

  • sed @ bash

    编译时 指定 -g 以编译 Debug 版本在 configure.ac 文件的倒数第二行新增一行。编译结束再删除...

  • Bash

    主要概念 Linux默认的shell是bash Shell bash Shell 可以交互使用,或者作为一种强大的...

  • Shell补课

    更改启动shell chsh -s /bin/bash shell目录文件 /etc/shells 区别.bash...

  • shell 编程学习

    当前shell执行命令。./或者source 新建shell:/bin/bash ./file.sh bash $...

网友评论

      本文标题:bash shell传递包含斜杠的变量到sed

      本文链接:https://www.haomeiwen.com/subject/mvcqgqtx.html