• ベストアンサー

Linuxのシェルスクリプトについて

最近Linuxの使い方を勉強し始めたのですが シェルスクリプトについてわからないところがあるので教えてください。 カレンダーを出力するスクリプト #/bin/sh n=$1 while [ $n -le $2 ]; do echo "year $n" cal $n n=`expr $n + $3` done というcal.shという名前のスクリプトを作りました。 ./cal.sh x y z (x,yは年数、zは何年飛ばしで表示するかを指定する引数です) と実行すると問題なくカレンダーが表示されるのですが x,y,zの値に不適切な入力値がある場合や、引数の数が2つより少ない場合 使い方を示すメッセージを出力してプログラムを終了するようにしたいです どうすればいいのかわかりません。 本当に困っています。 親切な方のご回答をお待ちしています。

質問者が選んだベストアンサー

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4900/10358)
回答No.3

引数の個数をチェックしたいのなら、 if [ $# -ne 3 ];then echo 引数の個数がおかしい; exit 1;fi など。 不適切な入力値のチェックは、何を以て不適切とするか。。。 「数字だけからなる」というチェックはちょっと面倒ですね。外部コマンド expr を使って、 if expr "$1" : '^[0-9][0-9]*$' >/dev/null then : else echo 第一引数が数字じゃない; exit 1 fi 数字だとわかった後で、if [ "$1" -le "$2" ] とか調べるのかな。 Linuxで /bin/sh というのは bash なので、書籍などを見るなら bash の物を見てください。オンラインマニュアルを見たい場合は、 man bash で。 なお、下記で表示される物はシェルと関係ありません。別のツールのマニュアルです。 > man if > man while >man switch > man case

bacqmas1
質問者

お礼

詳しい回答をありがとうございました! 質問内容がわかりにくくてすみません

その他の回答 (2)

回答No.2

Linuxであれば、別のシェル(bashなど)をならった方がいいような気がしますが。 とりあえず、あなたが使用しているシェルは B-Shell(Bone-Shell)->ビー・シェル と呼ばれているものです。 その辺から理解しましょう。 わかっていればたぶん「Linuxのシェルスクリプト」となっていないと思います。 UNIX系では、ラインエデターとか、ラインヘルプなる物がついています。 GUIの普通のヘルプでもかまいませんがシェルで開発するなら、それらがもっとも便利に使えます。 例えば変数名が間違えた場合、コマンドウインドウの中でラインエディターを起動し、修正、実行を繰り返す事ができるからです。 例えばラインヘルプに「man」「info」とかあります(OSのよっては違う名前)。これで、 > man sh > man if > man while >man switch > man case とかすると説明とともに例題がでてきます。また、/etc/*, /etc/rc* 以下にシステムのシェルスクリプトがあるので参考にしてください。 それらを参考にすると、システムの勉強にもなります。デーモンの起動や、プロセスの取得の仕方など多岐にわたり、ヒントが格納されています。 上記のようにヘルプ見れば、あなたの疑問は全てとけます。

bacqmas1
質問者

お礼

自分で調べてそれでもわからなかったから質問しているんですがね。 ありがとうございました

  • DIooggooID
  • ベストアンサー率27% (1730/6405)
回答No.1

こちらを参考になされては? http://www.ep.sci.hokudai.ac.jp/~inex/y2009/0508/jitsugi/script.html 引数の個数によって、処理を分けている事例があります。

bacqmas1
質問者

お礼

ありがとうございました 助かりました

関連するQ&A