Скрипты Wrapper с кавычками - PullRequest
0 голосов
/ 02 февраля 2012

У меня есть несколько скриптов на 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

Если я просто скопирую и вставлю вывод и запустлю его, он будет работать нормально.

Может кто-нибудь сказать мне, почему фактическое выполнение не будет выполнено из сценария, но успешно в командной строке?

спасибо.

1 Ответ

1 голос
/ 02 февраля 2012

вам нужны кавычки вокруг фактического использования параметра $@, т.е.

 source env.sh 
 echo "python $0.py $@"
 python $0.py "$@"

Надеюсь, это поможет.

...