У меня есть несколько скриптов на Python, и по разным причинам у меня есть оболочка для скриптов:
#!/bin/sh
source env.sh
python $0.py $@
Это работает нормально, если аргументы не нужно указывать в кавычках. В этом случае, конечно, оболочка, съедает кавычки и передает версию без кавычек скрипту python. Итак, мой первый вопрос: «Как я могу заставить sh не есть кавычки?»
Однако, даже если я коснусь кавычки, это не сработает. Я распечатываю всю команду, которую собираюсь вызвать:
source env.sh
echo "python $0.py $@"
python $0.py $@
Если я назову это с помощью foo \ "a b c", то получится
python foo.py "a b c"
Однако, когда вызывается foo.py, он все еще ПОЛУЧАЕТ foo.py a b c
Если я просто скопирую и вставлю вывод и запустлю его, он будет работать нормально.
Может кто-нибудь сказать мне, почему фактическое выполнение не будет выполнено из сценария, но успешно в командной строке?
спасибо.