Вручную введите путь Windows в Bash, как преобразовать в путь POSIX? - PullRequest
1 голос
/ 04 июля 2019

Когда я вручную ввожу путь Windows в Bash, я хочу преобразовать его в путь 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;

enter image description here

Ответы [ 2 ]

1 голос
/ 05 июля 2019

Проблема в том, что обратный слеш в вашем маршруте Windows рассматривается как способ экранирования персонажа.

Здесь у вас есть два варианта: либо вы пишете маршрут с двойной обратной косой чертой (C: \\ Users \\ ...), либо вы можете использовать read -rp "Enter a path: " pth (обратите внимание на r).

Лично я предпочитаю второй вариант, так как вам не нужно указывать другим пользователям писать маршрут с двойной обратной косой чертой, и он проще.

1 голос
/ 05 июля 2019

Это потому, что bash рассматривает обратную косую черту \ в вашем C:\Users\<user>\Downloads\Compressed как escape-символ.Чтобы решить эту проблему, вы должны ввести в качестве C:\\Users\\<user>\\Downloads\\Compressed.

...