空白を含む文字列を解析するのではなく、文字列全体としてカウントできるようにしようとしています。KSHの引数の空白を数えますか?
$ ksh program.ksh "what up"
File 'what up' not found.
そして、これは私が取得していますものです::
$ ksh program.ksh "what up"
File 'what' not found.
File 'up' not found.
は、これは私が仕事をするために試したコードです:
wflag=false
cflag=false
while getopts "cw" opt; do
case "$opt" in
c)
cflag=true
;;
w)
wflag=true
;;
/?)
;;
esac
done
をこれは私が起きていたいものです
問題は、1)ksh program.ksh "what up"
のようなものを試してみてください.2)ksh program.ksh "-w -c"
のようなものを試してみます。もう1つは、私がwflag
とcflag
を印刷したときのように、どちらも真です。ここで文字列として扱われるべきではない"-w -c"
?カーネルのように思えます(カーネルはここで作業していますか?)。これは私の望むものではありませんが、これを解析しています。私はそれを空白文字列として扱いたい。私はWordSplittingを読んできました。(議論に関する記事は投稿できません))、と思うと私はそれを理解しています。明らかに私は何かを見逃しているか、実際にはそれを理解していないはずです:P
私の本能は、何かが空白を自動的に取り除く何かがgetopts
と私に伝えます。私は"$opt"
の代わりに$(opt)
を試しただけでなく、中括弧や一重引用符で囲みました。悲しいかな、葉巻。
ご協力いただければ幸いです。このテキストの壁を通して読んでいただきありがとうございます。
このような明確かつ役立つ回答をいただきありがとうございます。残念なことに、 'getopts'は長いオプションをサポートしていないので、これを達成する別の方法を見つけなければならないかもしれません。多分、すべての引数を配列に格納し、それらを一度に1つずつ処理することを試みます。助けてくれてありがとう! – Fred
ksh93を使用している場合、その 'getopts'組み込み関数には、長いオプションを可能にする拡張機能があります。 – jilles
@Alex:@jillesはksh93で 'getopts'が長いオプションを許可していることを知っておくべきです。これは、[official 'man's page](http://www2.research.att.com/sw/download/man/man1/ksh.html)には記載されていませんが、' getopts --man'に記載されています。しかし、 ' bloat '。 –