Bash脚本:替换参数中的反斜杠字符?

时间:2016-10-25 21:18:38

标签: bash macos shell sed

我有一个名为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

1 个答案:

答案 0 :(得分:4)

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

./test 'aaa\aa'

以下示例显示带引号的内容与不带引号的内容:

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

另请阅读:Meaning of backslash