【问题标题】:Bash Script: Replace backslash characters in argument?Bash Script:替换参数中的反斜杠字符?
【发布时间】:2017-03-08 02:06:31
【问题描述】:

我有一个名为 test 的脚本,我正在尝试接受一个参数并将反斜杠替换为正斜杠。如果我执行以下操作:

#!/bin/bash

FIRST_ARGUMENT=$1

echo $FIRST_ARGUMENT | sed 's/\\/\//g'

我是这样使用它的:

$ ./test  aaa\aa    
aaaaa

我的反斜杠消失了。有没有办法保存它们,以便它们被 sed 取代?当我在 echo 调用中将路径硬编码为字符串时,如下所示:

echo 'aaa\aa'| sed 's/\\/\//g'

我得到了正确的结果:

aaa/aa

【问题讨论】:

  • shell 在处理命令行时会解析反斜杠。您必须对它进行双重转义才能使转义生存下来,以便在命令“内部”使用。
  • 用作:./test 'aaa\aa'
  • 变量名也最好使用小写,以避免与大写的shell variables发生冲突

标签: bash macos shell sed


【解决方案1】:

在将其传递给./test 时,使用引用'" 作为:

./test 'aaa\aa'

以下是显示带引号和不带引号内容之间差异的示例:

moin@moin-pc:~$ echo aa\aa
aaaa  # without '\'
moin@moin-pc:~$ echo "aa\aa"
aa\aa  # with '\'

另请阅读:Meaning of backslash

【讨论】:

    猜你喜欢
    • 2018-02-27
    • 2011-08-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多