Обратные косые черты исчезают из пользовательского ввода (чтение -p) - PullRequest
0 голосов
/ 24 января 2019

В моем скрипте я прошу пользователя указать путь. Поскольку я на Windows, я хочу заменить все \ на /. Это было бы легко сделать, но у меня возникли некоторые проблемы:

read -p "Please, type/paste the working path (folder) you wish to link this scripts: " working_dir

Я уже сделал то, что сказал этот ответ:

https://stackoverflow.com/a/6853452/3286975

tr '\\' '/'

https://superuser.com/a/1068082/634144

home_mf="${home//\\//}"

https://stackoverflow.com/a/50220624/3286975

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

Но мне не повезло. Вот что я делаю:

working_dir=$(echo "$working_dir" | <some of the pipe I typed before>)
echo $working_dir

EDIT:

Весь цитируемый текст бесполезен для вопроса. Я думал, что проблема была здесь. Но повторяет $ working_dir по команде read -p:

read -p "Please, type/paste the working path (folder) you wish to link this scripts: " working_dir
echo $working_dir

Вывести это:

...

Почему исчезают обратные слеши? Моя логика думает, что B и G тоже нужно экранировать, или я ошибаюсь?

1 Ответ

0 голосов
/ 24 января 2019

Вы хотите использовать переключатель -r от read до , чтобы запретить обратную косую черту без символов (как написано в help read).

Так что это будет работать:

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