在Bash中手动输入一个Windows路径,如何转换为POSIX路径?

Manually enter a Windows path in Bash, how to convert to a POSIX path?

当我在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;

这是因为 bash 将您的 C:\Users\<user>\Downloads\Compressed 中的反斜杠 \ 视为转义字符。要解决此问题,您需要将输入作为 C:\Users\<user>\Downloads\Compressed

问题是您的 Windows 路由中的反斜杠被认为是转义字符的一种方式。

这里你有两个选择,要么你用双反斜杠写路由(C:\\Users\\...),要么你可以使用 read -rp "Enter a path: " pth(注意 r)。

我个人更喜欢第二种方式,因为你不必告诉其他用户用双反斜杠写路由,而且更简单。