Редактировать
Попытка:
BLACKRAY_END_POINT="'default -p 8890'"
или
BLACKRAY_END_POINT='"default -p 8890"'
или
BLACKRAY_END_POINT="default\ -p\ 8890"
или
BLACKRAY_END_POINT='default\ -p\ 8890'
и
BLACKRAY_INDEX_CMD="$BLACKRAY_BIN_PATH/blackray_loader -c $BLACKRAY_LOADER_DEF_PATH/$BLACKRAY_LOADER_DEF_NAME -d $BLACKRAY_CSV_PATH -e $BLACKRAY_END_POINT"
Оригинальный ответ :
Является ли blackray_loader сценарием оболочки?
Вот демонстрация того, что вам приходится иметь дело с этой проблемой как при указании параметра, так и при его обработке:
Текстовый файл с именем «test.txt» (включая номера строк):
1 two words
2 two words
3 two
4 words
Скрипт под названием "spacetest":
#!/bin/bash
echo "No quotes in script"
echo $1
grep $1 test.txt
echo
echo "With quotes in script"
echo "$1"
grep "$1" test.txt
echo
Запустить его с ./spacetest "two--------words"
(заменить дефисы пробелами):
No quotes in script
two words
grep: words: No such file or directory
test.txt:1 two words
test.txt:2 two words
test.txt:3 two
With quotes in script
two words
2 two words
Вы можете видеть, что в разделе «Без кавычек» он попытался сделать grep two words test.txt
, который интерпретировал «слова» как имя файла в дополнение к «test.txt». Кроме того, echo
опустил лишние пробелы.
Когда параметр заключен в кавычки, как во втором разделе, grep
видел его как один аргумент (включая лишние пробелы) и обрабатывал его правильно. И echo
сохранил лишние пробелы.
Кстати, я использовал лишние пробелы просто для помощи в демонстрации.