Путь К Скрипту Bash, Содержащий Пробел

#bash

Вопрос:

У меня просто есть этот простой сценарий :

 #!/bin/bash

mainDir="EVE-NG Repos"
mega-ls ahmedrafat@debugz-it.com:$mainDir
 

Но я получил эту ошибку :

 [API:err: 08:40:34] Couldn't find "ahmedrafat@debugz-it.com:EVE-NG Repos"
 

Когда я ввожу команду изначально в bash, как это :

 mega-ls ahmedrafat@debugz-it.com:EVE-NG Repos
 

Это работает, но внутри сценария это не так.

Комментарии:

1. Удалите « из присваивания переменной и укажите свои переменные, попробуйте вставить свой код в shellcheck.net для подтверждения/рекомендации.

2.Я попытался удалить его, но для работы путь должен быть передан mega-ls как (EVE-NG Репозитории). Я попробовал следующее : mainDir = "EVE-NG\ Repos" mainDir = "EVE-NG Repos" ни одно из них не работает

3. Сценарий и команда, введенные в интерактивном режиме, не эквивалентны: в сценарии обратная косая черта является буквальной. mainDir='EVE-NG Repos'; mega-ls ahmedrafat@debugz-it.com:"$mainDir" должно действительно сработать.

Ответ №1:

Попробуйте ввести это в оболочке:

 mega-ls "ahmedrafat@debugz-it.com:EVE-NG Repos"
 

Это все проясняет? Внутри кавычек вам не нужно избегать пробелов (и это не работает, вместо этого отправляйте char).

Обратите внимание, что это требуется на всем пути:

 Myvar="this and that"
echo "$Myvar" #with quotes to get 1 arg