• ベストアンサー

Shell Scriptの初心者

Shell Scriptの初心者です。 Shell Script条件判断できますか? 例えば、月の変わり目、month=4 とmonth=5によって、違う処理がしたい場合、 どうすれば良いでしょうか? 教えてください! お願いします。

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

  • ベストアンサー
  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

ど~いうシェルを使うかしりませんが, 例えば bash なら: month という変数があったとすると, if [ $month = 4 ]; then month=4 のときの処理 elif [ $month = 5 ]; then month=5 のときの処理 else その他の処理 fi

2003saki
質問者

お礼

ご回答ありがとうございます。

その他の回答 (1)

  • mac_res
  • ベストアンサー率36% (568/1571)
回答No.2

shell Scriptでは、if文よりcase文のが効率よく処理されます。 -- 8<-- 8<-- 8<-- 8<-- 8<-- 8<-- 8<-- 8<-- 8<-- 8<-- 8<-- 8<-- #! /bin/sh case $month in 4) echo April;; 5) echo May;; esac

2003saki
質問者

お礼

ご回答ありがとうございます。

関連するQ&A

  • Shell Scriptの初心者

    こんにちは! Shell Scriptの初心者です。 ソースを解読必要が有って、Shell Scriptに関するわかりやすくサイト教えてください。

  • PL/SQLからshellスクリプトの起動はできますか?

    ORACLE9i(Solaris)で処理しているPL/SQLから同サーバ上のshellスクリプトを起動させることは可能でしょうか?可能な場合は、そのやり方を教えてください。

  • Shellプログラミングについて(初心者です)

    初心者です。 Shellプログラミングについての質問です。 ある変数の値を判定させて、ERRORの場合に特定のユーザーに通知するという事は実現可能でしょうか? 可能であれば簡単にサンプルを提示して頂けたらと思います。 環境はUNIX、Linuxのサーバです。

  • c shellスクリプト中のエスケープとコメントアウト

    c shellスクリプトで改行コード(文末の"\n")をエスケープしたい場合に関して伺いたく思っています。以下のように「my_command」というコマンドに、幾つかオプションをつけるような場合、改行コードをエスケープして見やすく記述したいような場合を想定しています。 ある行をコメントアウトするとき(下の例の "<-")、その行の末尾に"\"が必要なようです。 しかし、これがどうしてコメント行の最後をエスケープしないといけないのか、あるいは、どうしてコメントが有効に働くのか、不思議に思っています。 SHELLがどのような処理手順をとっているから"\"があると有効に処理されるのか、教えていただけませんでしょうか? 【推測1】 [改行コードまで読む] --> [式を評価] ... この処理だと > my_command -opt_a hoge_a # -opt_b hoge_b_tmp -opt_b hoge_b が評価され、正しくオプションが渡せない。。。 ※ 一行づつ式を評価をしながら"\n"があるまで読みこみ、"\n"を発見したら子シェルを起動する、という手順で正しいのでしょうか? 【例】 -------------------------------- #! /bin/csh -f my_command -opt_a hoge_a \ # -opt_b hoge_b_tmp \ <-- -opt_b hoge_b --------------------------------

  • Linux 起動スクリプト(shell)

    Linux(CentOS5)で自作の起動スクリプトを作成しているのですが、 うまく動作しません。 /etc/rc.d/init.d配下にスクリプトを設置し、さらに起動スクリプトから /usr/local/lib/sssの外部ファイルを読込んでいます。 その外部ファイルは、iniファイルの設定がtrueの場合、 whileで回る仕組みになっています。(sleep 何秒毎に動くか制御しています) httpdのように常駐起動させたいのですが、どのようにすればいいのでしょうか? 実行すると処理が止まってしまいます。 ■起動スクリプト /etc/rc.d/init.d/aaa ← 起動スクリプト           |― function読込           |― ネットワーク設定読込           |― INIファイル読込み           |― 外部スクリプト実行 ■実行ファイル /usr/sbin/aaa ← 実行ファイル           |― 外部スクリプト読込           |― 外部スクリプト実行 ■外部ファイル           |― 外部ファイル処理起動           |― INIファイルがtrueの場合、whileによりループされる。 -------------------------------------------- /etc/rc.d/init.d/aaa ← 起動スクリプト start() { if [ "${path}" = "true" ]; then KIND="aaa" echo -n $"Starting $KIND services: " daemon aaa ${option} test RETVALaa=$? echo [ $RETVALaaa -eq 0 ] && touch ${LOCKPATH}/${SERVICE_NAME}test || \ RETVALaa=1 return $RETVALaa fi (省略) -------------------------------------------- /usr/sbin/aaa ← 実行ファイル case $1 in "-D" ) case $2 in "test" ) sh ${path}/aaa > /dev/null & ;; * ) ;; esac ;; * ) echo $"Usage: $0 {start|stop|restart|reload|status|condrestart}" exit 2 esac exit 0 (省略) -------------------------------------------- ■外部ファイル if [ "${SETTING}" = "true" ]; then while : do #メイン処理 (省略) sleep ${SLEEP} done #設定がfalseの場合、何もしない elif [ "${SETTING}" = "false" ]; then echo -e "${CONFIG_FALSE}" sleep ${SLEEP} exit 10 #設定が未知のものなら、終了する else echo -e "Error: ${CONFIG_ERROR}" exit 12 fi # 終了 exit 0

  • LinuxのShellの仕様について

    こんにちは。 現在、WindowsVistaで、CygwinのBashを使っています。 そこで、LinuxのShellの仕様がどのようになっているのかを、詳しく知りたいと考えています。 具体的に知りたいのは、 「LinuxのShell、はコマンドラインをどのような順序で、どのように解釈し、処理しているのか?」 という事です。 Windowsでは、まず、コマンドプロンプトがコマンドラインを処理し、 処理された後のコマンドライン引数を、各コマンドが受け取るようになっています。 これはLinuxのShellでも同じだと思うのですが、例えば、 「コマンドプロンプトはワイルドカードを展開せず、ワイルドカードは各コマンドが処理している。」 といったような違いが見られます。 説明して下さるのが面倒だとお考えの場合は、役に立つサイトのURLだけでも教えて頂けると 大変助かります。 では、よろしくお願い致します。

  • 悪質なスクリプトを検出しました

    ネット友達のPCに下記のような警告がでました PCはXPです Norton AntiVirus 警告:悪質なスクリプトを検出しました オブジェクト Windows Script Host Shell Object 活動 Run ファイル C¥OPTIONS¥ISE.VBE どう処理しますか? 処理 このスクリプトを停止する(推奨) と表示されたのでOKをクリックしたそうです ウイルス? それとも誤動作? ISE.VBEというのを私のPCで検索してみたのですが ありませんでした(win2000)

  • 超初心者の為のエクセルでスクリプトを組む方法

    宜しくお願いいたします。 スクリプトを0から学ぶサイトを教えてください。 超初心者向けのサイトが見当たりません。 エクセルのマクロ機能でスクリプトを組んでウェブの情報など自動取得しデータベース化し関数処理したいです。 エクセルを操作をする簡単なマクロは作成できますが、その中にスクリプトを組むまでのレベルではないです。

  • 【初心者】シェルスクリプトの引数に関して

    現在、シェルスクリプトを作成しようと奮闘中です。 そこで引数に関してお伺いさせてください。 以下が実施したい内容になります。 (1)./test.sh ⇒引数を指定していないため、「引数を指定してください。」と出力し処理終了 (2)./test.sh daily⇒引数で指定した[daily]の処理を実行 (3)./test.sh weekly⇒引数で指定した[weekly]の処理を実行 (1)~(3)の条件を含んだシェルスクリプトを作成するには、 どのような実行処理が必要かご教授お願いします。 ※処理内容に関しては特に指定はございません。 例: daily=特定ディレクトリのコピー weekly=dailyで処理したディレクトリをtarで圧縮し別のディレクトリへ移動 など分かりやすい内容だと幸いです。 また、情報に不備などがありましたらご指摘おねがいします。

  • shellスクリプトに複数の引数を渡したい

    shellスクリプトに複数の引数を渡したいと考えています。 下記のようなperlスクリプトを兼ねる事でやりたいことは達成できました。 これをシェルスクリプトだけでやろうとしていて、ハマってしまい、やり方がわからなかったので、質問しています。 ・echo.shの中身 $ cat echo.sh echo $1 $2 ・imglist.plの中身 $ cat imglist.pl my@imglist= `ls -1 *{.gif,.bmp,.jpg,.jpeg,.png} 2>1&`; foreach(@imglist){ my@name=split /\./,$_; system("bash ./echo.sh $name[0] $name[1]"); } ・実行すると、無事echo.shに引数が2つ渡る。 $ perl imglist.pl abc1 jpg abc10 png abc11 png abc2 jpg abc3 jpg これをシェルのみでやろうとして、はまってしまいました。 以下は、パイプ処理等を使ったりしてやってみたのですが出来ませんでした。 ・awkでファイル名と拡張子に分解し、パイプで渡そうとしても何故か渡らない・・ $ ls -1 *{.gif,.bmp,.jpg,.jpeg,.png} | awk -F . '{print $1,$2}'| bash ./echo.sh ・ファイルに一旦保存し、catコマンドでパイプで渡しても駄目 $ ls -1 *{.gif,.bmp,.jpg,.jpeg,.png} | awk -F . '{print $1,$2}' > imglist.txt $ cat imglist.txt | bash ./echo.sh ・echoコマンドを使ってパイプで渡しても駄目 $ echo `cat imglist.txt` |bash ./echo.sh ・for.shというファイルを作成し、for構文でimglist.txtの中身を渡すと引数が一つずつしか渡らない $ cat for.sh for id in $(cat imglist.txt); do echo $id done $ bash for.sh tile1 jpg tile10 jpg どうやれば、コマンドライン上やシェルスクリプトだけで、今回はファイル名と拡張子という形で複数行からなる2つの引数を渡すことができますでしょうか

    • ベストアンサー
    • Perl