シェル変数からパラメータを渡して呼び出すプログラムがあります。この質問を通じて、私はそれはそれはそれに渡される引数の数を出力しますシェル変数で空白を含むパラメータを渡す
#!/bin/sh
echo $#
すなわちで与えられると仮定するつもりです。それをcount-args
としましょう。
私はこのように私のプログラムを呼び出します。
X="arg1 arg2"
count-args $X
これは非常によく動作します。しかし、今では私の議論の一つに空白があり、私はそれを逃れる方法を見つけることができません。以下のものは動作しません:例すべてにおいて
X="Hello\ World"
X="Hello\\ World"
X="'Hello World'"
、私のプログラム2
アウトcount-args
プリントを。方法を見つけて、文字列Hello World
を渡すことができ、代わりに1
を返します。どうやって?
わかりやすくするために、すべてのパラメータを単一の文字列として渡す必要はありません。
X="Hello World"
count-args $X
は、2
を出力します。空白を含むパラメータを渡す方法が必要です。
あなたは自分自身と矛盾しています。 '' 'X =" Hello World "; count-args $ X'''は '' '1'''を出力します。これを実現するには、user1934428: '' '" $ X "' ''のように引用符を使います。この単一の文字列を複数のパラメータとして解釈したい場合は、間違っています:http://mywiki.wooledge.org/BashFAQ/050! – dekkard
@dekkard:私が望むものを正確に行う方法を見つけたので、私の要件は一貫していると確信しています。しかし、そのリンクのおかげで、それは非常に有用です。 –