我正在尝试设置一个Git
别名,它必须将反斜杠转换为正斜杠,以便稍后将其传递给filter-branch
命令(因为我使用Posh
并且需要将基于DOS
的文件路径作为参数传递。)
所以我有这个别名:
echo-test = "!f() { path=$(echo $1 | tr '\\' '/'); echo $path; }; f"
但是我收到了这个错误:
tr:警告:字符串末尾的非转义反斜杠不可移植
我尝试在内部写tr '\\\\' '/'
,认为Git
只是逃避\
而bash
只获得一个\
,但我得到同样的错误。
有什么想法吗?
答案 0 :(得分:1)
你需要在这里写8个反斜杠,因为字符串将被转义三次。
echo-test = "!f() { path=$(echo $1 | tr '\\\\\\\\' '/'); echo $path; }; f"
tr
。第二次加倍归因于format of .gitconfig
在双引号内,必须对双引号
"
和反斜杠\
字符进行转义:对\"
使用"
,为\\
使用\
第三次加倍是由于使用sh -c "…"
执行命令。