小编neu*_*lly的帖子

将命令输出保存到 bash 中的变量会导致“不推荐使用正则表达式中未转义的左大括号”

勘误表:

已经提出了类似的问题,但在搜索了几天之后,似乎没有针对这种特定情况的答案。

问题描述:

以下 bash 脚本中的第二行触发错误:

#!/bin/bash
sessionuser=$( ps -o user= -p $$ | awk '{print $1}' )
print $sessionuser
Run Code Online (Sandbox Code Playgroud)

这是错误消息:

Unescaped left brace in regex is deprecated, passed through in regex; marked by <-- HERE in m/%{ <-- HERE (.*?)}/ at /usr/bin/print line 528.
Run Code Online (Sandbox Code Playgroud)

我尝试过的事情:

  1. 在 $() 命令输出捕获方法的内部和外部,我已经尝试了单引号、后斜单引号、双引号和间距的所有组合。
  2. 我曾尝试使用 $( exec ... ) 其中 ... 是此处尝试的命令。
  3. 我已经阅读了 bash,并搜索了这些论坛和许多其他论坛,但似乎没有说明为什么会出现此错误消息或如何解决它。

如果错误消息中给出的建议是这样的:

sessionuser=$( ps -o user= -p 1000 | awk '\{print $1}' )
Run Code Online (Sandbox Code Playgroud)

它导致以下错误消息与上一个错误消息相结合:

awk: cmd. line:1: \{print $1}
awk: cmd. line:1: …
Run Code Online (Sandbox Code Playgroud)

bash escape-characters command-substitution

4
推荐指数
1
解决办法
2225
查看次数