Bash 反斜杠正在从用户输入中消失(read-p)

Bash 反斜杠正在从用户输入中消失(read-p),bash,replace,backslash,Bash,Replace,Backslash,在我的脚本中,我请求用户指定一个路径。因为我在Windows上,所以我想将所有\替换为/。这将是一项简单的任务,但我遇到了一些麻烦: read -p "Please, type/paste the working path (folder) you wish to link this scripts: " working_dir 我已经做了回答中所说的: tr'\\'/' home\u mf=“${home/\\/}” sed's//\\//\//g' 但是我没有运气。我就是这么做的:

在我的脚本中,我请求用户指定一个路径。因为我在Windows上,所以我想将所有
\
替换为
/
。这将是一项简单的任务,但我遇到了一些麻烦:

read -p "Please, type/paste the working path (folder) you wish to link this scripts: " working_dir
我已经做了回答中所说的:

tr'\\'/'

home\u mf=“${home/\\/}”

sed's//\\//\//g'

但是我没有运气。我就是这么做的:

working_dir=$(echo "$working_dir" | <some of the pipe I typed before>)
echo $working_dir
输出此项:


为什么反斜杠消失了?我的逻辑认为
B
G
也应该转义,否则我错了?

您想使用
read
-r
开关,不允许反斜杠转义任何字符(如
帮助读取
中所述)

因此,这将起作用:

read -rp "Please, type/paste the working path (folder) you wish to link this scripts: " working_dir
working_dir=${working_dir//\\//}

“${home/\\/}”
应该可以正常工作。
declare-p home
的输出是什么?如果不是太大,请准确显示您尝试的内容以及
设置的其余部分。sh
。这个错误看起来与你正在询问的手术没有任何关系,但很难说。哦,天哪,@anubhava,我还以为问题已经解决了呢。是在输入上。我将编辑整个问题。例如,在
bash
提示符中键入:
x=\\a\\b\\c;x=$(回显“$x”| tr'\\'''/');echo$x
生成
/a/b/c
。谢谢!这是有用的。我不知道
read
命令上的-r参数。这应该是默认值!因此,请始终将
read
-r
开关一起使用,除非您确实希望将反斜杠作为转义字符!好的,我会处理这个问题。还有一个潜在的复杂问题:
echo
的某些版本将尝试解释转义(反斜杠),因此即使它们正确地位于变量中,也可能无法打印。使用
printf“%s\n'$working\u dir”代替
echo
read -rp "Please, type/paste the working path (folder) you wish to link this scripts: " working_dir
working_dir=${working_dir//\\//}