意外令牌附近的语法错误`(''

Rad*_*dek 13 bash shell

我正在努力执行

sudo -su db2inst1 /opt/ibm/db2/V9.7/bin/db2 force application (1995)
Run Code Online (Sandbox Code Playgroud)

但是我得到了这个错误 bash: syntax error near unexpected token('`

sudo -su db2inst1 id
Run Code Online (Sandbox Code Playgroud)

给我正确的输出.所以它一定是关于()的东西

更新我

如果我试试

sudo -su db2inst1 /opt/ibm/db2/V9.7/bin/db2 force application \(1995\)
Run Code Online (Sandbox Code Playgroud)

我明白了

/bin/bash: -c: line 0: syntax error near unexpected token `('
/bin/bash: -c: line 0: `/opt/ibm/db2/V9.7/bin/db2 force application (1995)'
Run Code Online (Sandbox Code Playgroud)

更新II

/opt/ibm/db2/V9.7/bin/db2 force application (1995)作为db2inst1用户运行给我同样的错误但运行

/opt/ibm/db2/V9.7/bin/db2 "force application (1995)"
Run Code Online (Sandbox Code Playgroud)

工作良好

更新III

正确的语法是

sudo -su db2inst1 '/opt/ibm/db2/V9.7/bin/db2 "force application (1995)"'
Run Code Online (Sandbox Code Playgroud)

Ran*_*832 20

既然您已经输入了要输入的shell和sudo -s运行的shell ,那么您需要引用或转义两次.(编辑固定报价)

sudo -su db2inst1 '/opt/ibm/db2/V9.7/bin/db2 force application \(1995\)'
Run Code Online (Sandbox Code Playgroud)

要么

sudo -su db2inst1 /opt/ibm/db2/V9.7/bin/db2 force application \\\(1995\\\)
Run Code Online (Sandbox Code Playgroud)

出于好奇,你为什么需要-s?你能不能这样做:

sudo -u db2inst1 /opt/ibm/db2/V9.7/bin/db2 force application \(1995\)
Run Code Online (Sandbox Code Playgroud)