相关疑难解决方法(0)

如何在shell中转义引号?

我在 bash 中转义字符时遇到问题。我想在不同用户下运行命令时转义单引号和双引号。出于这个问题的目的,假设我想在屏幕上回显以下内容:

'single quote phrase' "double quote phrase"
Run Code Online (Sandbox Code Playgroud)

如果我还需要切换到其他用户,我该如何转义所有特殊字符:

sudo su USER -c "echo \"'single quote phrase' \"double quote phrase\"\""
Run Code Online (Sandbox Code Playgroud)

当然,这不会产生正确的结果。

shell quoting escape-characters

113
推荐指数
4
解决办法
31万
查看次数

打印包含单引号和其他特殊字符的字符串

我怎样才能用 AIX 脚本正确地写这个?我的要求是在 test.txt 中写这个命令:

clock=$(prtconf -s | awk '{print $4,$5}')
Run Code Online (Sandbox Code Playgroud)

我试过这个命令:

print 'clock=$(prtconf -s | awk '{print $4,$5}')' > test.txt
Run Code Online (Sandbox Code Playgroud)

写在 test.txt 中的输出给了我:

clock=$(prtconf -s | awk {print ,})
Run Code Online (Sandbox Code Playgroud)

如果我使用" "引号:

print "clock=$(prtconf -s | awk '{print $4,$5}')"
Run Code Online (Sandbox Code Playgroud)

它直接让我:

clock=3612 MHz
Run Code Online (Sandbox Code Playgroud)

我该如何解决这个问题?

command-line shell scripting awk quoting

8
推荐指数
2
解决办法
2万
查看次数

如果已经使用了单引号和双引号,如何用引号括起来?

我不记得我有时使用的解决大部分工作的确切命令和技巧,所以我尝试将它们记录到文件中以备将来参考。我通常做的只是将整个命令放入 echo 并快速将其附加到文件中。

这一直有效,但以下情况是第一次出现,我无法按照上述方式进行操作。

登录成功

$ echo "cat file1.txt | paste -d, - - ## Step 3 " >> ~/globalLog.txt
Run Code Online (Sandbox Code Playgroud)

卡在这里

$ echo "cat file2.txt  | sed 's/"//g' > file3.txt ## Step 2 " >> ~/globalLog.txt
Run Code Online (Sandbox Code Playgroud)

上面给出了一个明显的错误,因为引号没有正确关闭(下降到第二个命令 propmt(PS2我猜?)以完成命令,即>_在我的情况下),'sed 命令正在使用单()引号并且双( ") 引号用于替换 sed 表达式中的一个。

在这种情况下,我将如何附上完整的命令?

command-line quoting

7
推荐指数
3
解决办法
2万
查看次数