gpt4 book ai didi

linux - 将命令参数中的单引号转义为 sh -c

转载 作者:太空宇宙 更新时间:2023-11-04 10:11:13 27 4
gpt4 key购买 nike

我知道这个问题可能听起来很熟悉,并且可能与其他问题类似,例如 how to escape quotes in command argument to sh -c?和许多其他人。但是标记为这些问题的答案的方法都不适合我。所以,请耐心等待。

我正在尝试向另一个终端发送命令。我了解到我需要使用 sh -c 一次性发送整个命令。该命令本身是使用 7z 压缩文件。这是一个例子:

7z aa.zip Bb.txt

所以整个命令就是

sh -c '7z a Aa.zip Bb.txt'

这没有任何问题。问题是当要压缩的文件名中有单引号 (') 时,例如B'b.txt。所以,命令变成了

sh -c '7z a Aa.zip B'b.txt'

它不在终端中运行。

这些是我试过但没有成功的命令:

sh -c '7z a Aa.zip B'b.txt'
sh -c '7z a Aa.zip B\'b.txt'
sh -c '7z a Aa.zip B'"'"'b.txt'
sh -c '7z a Aa.zip "B'b.txt"'
sh -c '7z a Aa.zip \"B\'b.txt\"'
sh -c '7z a Aa.zip \"B'b.txt\"'
sh -c '7z a Aa.zip B'\''b.txt'

运行这些命令会导致此错误:

Syntax error: Unterminated quoted string

或等待输入

>

然后我使用 Ctrl+c 取消。

我还尝试使用一个变量,然后将其传递给 sh -c。再次没有运气:

cmd="'7z a Aa.zip B'b.txt'"
echo $cmd
'7z a Aa.zip B'b.txt'
sh -c $cmd
a: 1: a: Syntax error: Unterminated quoted string

请告诉我我做错了什么?

最佳答案

您正在寻找:

sh -c '7z a Aa.zip "B'\''b.txt"'

这:'\'' 是转义的 ' 作为字符串的一部分。 sh 命令本身需要它。开始运行命令后,让 ' 不匹配会导致问题,因此您需要将其放在字符串中。

关于linux - 将命令参数中的单引号转义为 sh -c,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48970174/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com