Как детоксифицировать ввод или переменную BASH? - PullRequest
0 голосов
/ 31 августа 2018

В настоящее время я использую от (tr -d ' ' <<< "$LOC1") до Детокс (изменить пробелы на \ / etc.) путь к файлу. Это работает не очень хорошо, так как он удаляет только пробелы вместо правильного форматирования, как "File\ path/". Поскольку переменная $ LOC1 может иметь разные пути, она должна быть «адаптируемой».

Я не мог найти какие-либо решения, которые позволили бы это с «гибким» путем / переменной файла. Так что я скромно спрашиваю здесь.

Я начал учиться, как «писать сценарии?» вчера, так что извините, если я не могу прояснить ситуацию.

 #!/bin/bash

LOC1=$(zenity --file-selection --directory --title="Select first directory")

LOC2=$(zenity --file-selection --directory --title="Select second direcotry")
LOC1=$(tr -d ' ' <<< "$LOC1")
LOC2=$(tr -d ' ' <<< "$LOC2")
clear
rsync -r --info=progress2 --delete-excluded $LOC1 $LOC2
read -n 1 -s -r -p "Your back-up is complete, Press any key to exit..."

Заранее спасибо!

edit: Проблема заключалась в том, что zenity предоставляет пользователю ввод данных для выбора каталога, но не удаляет пробелы в пути к этому каталогу. например, будет выводиться /media/productivity/Seagate backup A/Back-up вместо /media/productivity/Seagate\ backup\ A/Back-up

Как мне сделать так, чтобы скрипт очищал путь к файлу, не зная, сколько будет пробелов?

1 Ответ

0 голосов
/ 31 августа 2018

AFAIK, вам не нужно вносить изменения в этот путь для скрипта, который вы запускаете. Просто заключите в кавычки все переменные, чтобы они могли правильно интерпретироваться:

#!/bin/bash

LOC1=$(zenity --file-selection --directory --title="Select first directory")
LOC2=$(zenity --file-selection --directory --title="Select second direcotry")

clear
rsync -r --info=progress2 --delete-excluded "$LOC1" "$LOC2"
read -n 1 -s -r -p "Your back-up is complete, Press any key to exit..."
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...