2014-10-22 3 views
0

Я пытаюсь импортировать json-файл в mongo. Когда я импортировать файл с этой линией, это работает:Mongoimport на Mac терпит неудачу с переменной в пути к файлу

mongoimport -d reps_development -c users --jsonArray --file ~/reps/scripts/mockUserData.json 

Скрипт использует переменные окружения $ REPS_ROOT, который установлен в моем .bash_profile. Эта линия не может:

mongoimport -d reps_development -c users --jsonArray --file $REPS_ROOT/scripts/mockUserData.json 

Я поставил $ REPS_ROOT с помощью следующей команды:

export REPS_ROOT="~/reps" 

Любые мысли о том, почему это не работает? Ошибки я получаю:

file doesn't exist: ~/reps/scripts/mockUserData.json 
+0

Полный путь работает, но я бы очень хотел знать, почему я не могу сделать это с помощью относительного пути. Он тоже должен работать, верно? – ritmatter

ответ

0

Bash расширяет $REPS_ROOT к ~/reps, которая становится значение. Bash не будет расширять это значение снова. Если значение этой переменной содержит относительный путь, вам нужно убедиться, что он расширен. Например:

mongoimport -d reps_development -c users --jsonArray --file $(cd $REPS_ROOT; pwd)/scripts/mockUserData.json 

Если вы на Linux, вы можете использовать вместо $(readlink -f $REPS_ROOT). В качестве альтернативы вы можете использовать $HOME вместо ~:

export REPS_ROOT="$HOME/reps"