当我在Bash中手动输入Windows路径时, 我想将其转换为POSIX路径并将其保存在变量中。 但是转义字符不会转义。
我想输入C:\Users\xiang\Downloads\Compressed
并将其转换为
/c/users/xiang/downloads/compressed
#!/bin/sh
read -rp "Enter a path: " pth
dir=$(echo "/$pth" | sed -e 's/\\/\//g' -e 's/://')
cd ${dir}
git status
read -n 1 -s -r -p "Press any key to continue"
exit 0;
答案 0 :(得分:1)
这是因为bash将\
中的反斜杠C:\Users\<user>\Downloads\Compressed
视为转义字符。要解决此问题,您需要输入为C:\\Users\\<user>\\Downloads\\Compressed
。
答案 1 :(得分:1)
问题在于Windows路由中的反斜杠被认为是一种转义字符的方法。
这里有两个选项,要么用双反斜杠(C:\\ Users \\ ...)编写路由,要么可以使用read -rp "Enter a path: " pth
(请注意r)。
我个人比较喜欢第二种选择,因为您不必告诉其他用户使用双反斜线编写路由,而且更简单。