У меня проблемы с передачей пути в качестве аргумента, внутри которого есть пробел.

keyLocation="/Users/vladimir/Google\ Drive/file.pem"
ssh -i $keyLocation root@192.168.1.1;

Это дает мне следующую ошибку:

Предупреждение: Идентификационный файл /Users /vladimir /Google недоступен: такого файла или каталога нет.

Обычно после присваивания keyLocation становится «/Users/vladimir/Google Drive/file.pem» (нет), поэтому, когда он пытается использовать $ keyLocation в качестве аргумента, он передает его как

ssh -i /Users/vladimir/Google Drive/file.pem root@192.168.1.1

Как сделать так, чтобы команда ssh распознала его как путь, внутри которого есть пробел?

3 ответа3

12

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

keyLocation="/Users/vladimir/Google Drive/file.pem"
ssh -i "$keyLocation" root@192.168.1.1

Смотрите: Цитаты и побег [Bash Hackers Wiki]

0

Фрэнк ответил на это в комментариях:

$"$keyLocation"

Спасибо, Фрэнк.

0

Для меня сохранение пути в переменной не помогло.

Другой подход заключается в использовании символической ссылки

ln -s ~/Google\ Drive/ Drive

После этого вы можете использовать

ssh -i ~/Drive/file.pem root@192.168.1.1

Надеюсь, что это помогает кому-то еще!

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .