1

私は pythons に関するいくつかの誤解を学び、解決してきましたsys.argv。bash のコマンドラインからさまざまな文字を渡していたとき、次のことに気付きました。

script.py

import sys
def test(x):
    return x

print test(sys.argv)

>>>python script.py [first, second, third]

印刷します:

['script.py', '[first,', 'second,', 'third]']

>>>python script.py {first, second, third}

['script.py', '{first,','second,','third}']

しかし:

>>>python script.py (first,second,third)

bash: syntax error near unexpected token `('

これはpythonまたはbashですか、おそらく両方ですか?理由はありますか?

4

3 に答える 3

3

バッシュです。括弧は、サブシェルでコマンド チェーンを実行します。

pwd ; ( cd /tmp ; pwd ) ; pwd

引数で括弧を使用する場合は、括弧を引用する必要があります。

echo '(foo)'
于 2012-08-17T03:36:45.373 に答える
2

エラーメッセージが示すように、それはbashシェルです:

bash: syntax error near unexpected token `('

bash独自の目的で括弧を使用します (コマンドをグループ化するため)

次のように括弧をエスケープしてみてください。

   python script.py "(first,second,third)"

これもうまくいくかもしれません:

  python script.py \(first,second,third\)
于 2012-08-17T03:36:50.210 に答える
1

@Ignacioが言ったように、bashコマンドラインですべてのパラメータを引用してみてください。

ただし、bashをPythonのように扱っているようです。それらは異なるものです。

ここに良い(そして基本的な)シェルスクリプトのチュートリアルがあります:http://www.freeos.com/guides/lsst/

第 2 章を読むだけで、質問の答えを知ることができます。

于 2012-08-17T04:00:10.577 に答える