#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