gpt4 book ai didi

linux - 如何在 Bash 脚本中用转义版本替换特殊字符

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:56:03 28 4
gpt4 key购买 nike

我发誓我已经看了又看了又看。如果我在某个地方错过了这个问题的答案,我深表歉意;这意味着我的搜索失败了,而不是我没有尝试过。

我对 bash 脚本比较陌生(:sigh: 新手),但我正在尝试编写一个从用户那里获取一些输入并将其用于另一个命令的脚本。我的问题是其他命令需要转义用户输入中的任何特殊字符。

代码的基本形式如下:

#!/bin/bash

echo "Enter info:"
read _INFO

othercommand info=$_INFO

readothercommand 行之间,我需要修改 _INFO 以便任何特殊字符 - 空格,单引号和双引号.. . 几乎所有非字母数字字符,真的 - 都被转义了。例如,这个管道的输入:|是我的信息! 应该变成 this\pipe\:\\|\is\my\info\!

注意:我不能将引号(单引号或双引号)放入 othercommand 行,因为它会导致命令失败。信息字符串需要保持原样,但转义除外。

我尝试过以各种方式使用字符串替换宏(这里有一些只检查空格的例子):

_INFO = ${$_INFO// /\ }
_INFO = ${$_INFO// /\\ }
_INFO = ${$_INFO//" "/"\ "}
_INFO = ${$_INFO//" "/"\\ "}
_INFO = ${$_INFO//' '/'\ '}
_INFO = ${$_INFO//' '/'\\ '}

但我不断收到“错误替换”错误。

因此,这不仅过于具体(仅处理空格)而且无论如何都不起作用。我该怎么做?

如果我必须使用 sedawk 或其他非 bash 脚本处理原生的东西,我更愿意得到我需要的确切行使用,因为我完全不熟悉它们。 (:叹息:新手)

最佳答案

你可以为此尝试 printf:

printf -v _INFO '%q' "$_INFO"

关于linux - 如何在 Bash 脚本中用转义版本替换特殊字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18772403/

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