bash / optparse に奇妙な問題があります。文字列が定義されているときに、文字列を Python スクリプトに渡す必要があります。
次のコードを使用します。
./lol.py `if [ -n "$URL" ]; then echo -u \"$URL\"; fi`
ここにpythonスクリプトがあります:
def main():
parser = OptionParser()
parser.add_option("-u", dest="url")
opts, args = parser.parse_args()
print opts.url
bash 式をテストすると、動作しているように見えます。
user@fomce02:~$ URL="http://lol.com/my project/"
user@fomce02:~$ echo `if [ -n "$URL" ]; then echo -u \"$URL\"; fi`
-u "http://lol.com/my project/"
ただし、引数を指定してpythonスクリプトを実行すると
user@fomce02:~$ ./lol.py `if [ -n "$URL" ]; then echo -u "$URL"; fi`
http://lol.com/my
空白の後の文字列の一部を切り捨てます。
なぜそれが起こっているのか、それを機能させる方法を説明していただけますか?