4

で次のコマンドを使用しbashます。

python myscript.py filename_pattern*

sys.argv2 つの Linux マシンで 2つの異なる結果が得られました。

  • マシン A : sys.argv[1] = filename_pattern*
  • マシン B : sys.argv[1] = filename_pattern-2013-06-30

filename_pattern-2013-06-30現在のディレクトリにあるファイルです。

私の同僚の一人は、それは の悪だと私に言いましたbash。しかしbash、2 台のマシンが同じバージョンであることを確認~/.bashrc/etc/bashrc/etc/profile.d/*.shも確認しました。

bash2 つの同じバージョンの動作が異なる理由を誰か指摘できますか?

4

3 に答える 3

7

これは、あなたのマシンの 1 つのフォルダーに、パターンに一致するファイルが存在しないためです。だから、こうなったら*残る。パターンに一致するファイルの有無にかかわらず、1 台のコンピューターでテストできます。別の理由として、シェル オプションnullglobが無効になっています。これについては、GNU bash リファレンスを参照してください。

于 2013-07-11T07:13:21.240 に答える
0

Python の入門書で見つけたこの例のように、Python プログラムで処理できます。次に、bashが展開するかどうかは関係ありません。

import glob
import sys

sys.argv = [item for arg in sys.argv for item in glob.glob(arg)]
于 2013-07-11T08:00:29.253 に答える