首页 > 解决方案 > 使用 bash 脚本插入带有 $s 的 SQL 表

问题描述

我正在使用 bash 脚本来更改 SQL 数据库。我正在更新的值之一使用美元符号。当前值类似于“$$$$$”,我需要将其更改为“$$$$$$$$$$”。但是,bash 脚本中的 aa $ 用于变量。

如何允许我的 bash 脚本的这一小部分使用 $ 作为普通字符?

function prep() {
  DATE_STAMP=$(date +%m%d%Y)
  log "Changing mask to 10 characters"
  log "$(/opt/CPU/bin/connx-query -q "update TYPE set TYPE.MASK = '$$$$$$$$$$'")"
}

就目前而言,它只是用我脚本中前面找到的一些随机数替换每个美元符号。

标签: bashshellunixspecial-characters

解决方案


Bash 提供了不同类型的引用,每种都有不同的替换规则(单引号'、双引号"、此处为文档/字符串<<<"string"和 and $'

双引号(在 中使用log ... update)将启用变量替换,将每一对替换$$为当前的 shell PID(看起来像随机数)。几个选项:

考虑引用每个“$”以防止扩展

  log "$(/opt/CPU/bin/connx-query -q "update TYPE set TYPE.MASK = '\$\$\$\$\$\$\$\$\$\$'")"

推荐阅读