• 締切済み

シェルスクリプトの作り方を教えてください。

シェルスクリプトを作って、システムのフルバックアップを行いたいのですが シェルスクリプトについて無知なので、何からどう書いていけば良いのかわかりません。 コマンドについては調べてみました。mt、fbackupを使って行おうと思います。 でも、テープがちゃんと入っているかどうか、ライトプロテクトされていないか等で条件分岐させて、その都度質問を表示。 その回答によって処理を分けたいのです。 mt等は戻り値が返ってくると思うんですけど、それを使ってどーやって条件分岐の スプリクトを書いたら良いのか。。。 ちょっと理解しきれてなく、わかりづらい質問になってしまいましたが。。 教えてください。お願いします。

みんなの回答

  • miya_777
  • ベストアンサー率31% (44/140)
回答No.1

スクリプトを何に使うのかで変わると思いますが、一般的な「csh」の場合です。 mt if $status != 0 then   echo 正常終了 else   echo 異常終了 endif といった感じで書きます。 mt等、コマンドの戻り値は$statusに格納されますので、 これをif条件で記述すればOKです。

関連するQ&A

  • シェルスクリプトのbashとperlについて

    シェルスクリプトのbashとperlについて 今さら気づいたのですが、PerlもUNIXのコマンドやシェルスクリプトとして使用できるということでしょうか。 RubyやPHPをUNIXのコマンドやシェルスクリプトとして使用することはできますでしょうか。 学ぶとしたら、bashとPerlのどちらが良いでしょうか。 また、シェルスクリプトはどんな用途や利点がありますでしょうか。 Webアプリケーションによるバックアップやログをタイマーでセットして自動的に取得したりすることは可能でしょうか。

  • シェルスクリプトの書き方

    すみません、シェル初心者なのですが、急を用してまして質問させて頂きました。 シェルスクリプトで コマンドを実行する前に他のユーザにスイッチしてから 実行するというのを実現したいのですが・・・ #!/bin/csh コマンド1 コマンド2 ・・・ とコマンド1の前に su コマンドを実行させたいのですが、 パスワードを入力する際、対話式なので どう書いてよいか分かりません。 よろしくお願いします。

  • シェルスクリプト(sh)の関数の戻り値とtestコマンドによる判定の仕

    シェルスクリプト(sh)の関数の戻り値とtestコマンドによる判定の仕方が分かりません。 -------------------------------------------------- #!/bin/sh . GetYesNo.sh          #外部シェルスクリプトを読み込んで... GetYesNo $1           #このGetYesNoの戻り値は0か1を出力するようにする。 if[ ??? -eq 0 ]; then      #"???"の部分に何を入力すれば良いか分かりません。 echo "真(0)です。" else echo "偽(0以外)です。" fi -------------------------------------------------- 戻り値が0か1しか出力しない外部シェルスクリプトを読み込んで、その戻り値をtestコマンドを利用して、0か1のどちらかを判定して、それぞれの出力を出したいけれど、どうやって出来ますでしょうか。 色々な方法を試してみましたが、ダメでした。 上記のコードの書き間違いがあると思いますが、あったらご指摘をお願いします。

  • シェルスクリプト

    こんばんわ。最近Tru64でシェルスクリプトを書いています。そこで質問ですが、 前の実行コマンドが正常に終了したら次のコマンドが実行されるスクリプトはどのように書けばよいのでしょうか? if文で可能なのでしょうか? またkillコマンドをawkで kill psID OK?(y/n) と表示させyを押せばkillするようにするにはどのようにすればよいですか? 例のように表示させることはawkでできるのですがどうしたらy入力後killできるのかわかりません。 これもif文を使わなければだめなのでしょうか? よろしくお願いします。

  • Linuxシェルスクリプトを新しいコマンドにしたい

    Linux初級者です。よろしくお願いします。 OSにFedora Core 10, シェルにtcshを使用しています。 よく使用するコマンドを、まとめて一括で実行するように、 新しいコマンドを作成したくて、次のようなことをしていたのですが (1)ホームディレクトリにmybinというディレクトリを作成してPATHを通す。 (2)newbin1という以下の内容のシェルスクリプトを作成して、~/mybinに置いておく。 ================================== #!/bin/tcsh -f date #実行コマンド例1 echo $PATH #実行コマンド例2 ================================== (3)chmodコマンドでファイルに実行権限を与える。 上記のような方法で、作成したシェルスクリプト(newbin1)を PATHの通ったディレクトリ(~/mybin)に置いて、 > newbin1 とコマンドを呼び出しても、 "newbin1: コマンドが見つかりません" というエラーになってしまいます。 > which newbin1 とすると、ちゃんとファイルのパスが表示されるのですが、 *********************************************************** 自分で作成したシェルスクリプト(newbin1)を、 新しいコマンドとして認識させるにはどのようにすればよいのでしょうか。 また、そもそもシェルスクリプトを新しいコマンドにすることが 不可能だったりするんでしょうか? ************************************************************ 一括で実行したいコマンドが多い場合に、aliasで割り当てるのが大変なので、 できればaliasコマンドは使わずにできる方法を探しています。 基本的な質問かもしれませんが、よろしくお願い致します。

  • kシェルスクリプト内に行を挿入

    kシェルスクリプトで質問です。 例えば、以下のようなファイルがあったとします ********************************************** #!/bin/ksh   if (条件式1) then   コマンド1   コマンド2 endif if (条件式2) then   コマンド3   # aaaaaaaaaa else   コマンド4 endif ********************************************** ”コマンド3”の文字列をキーにして"# aaaaaaaaaa"の下に 「echo ttttttttt」 と、を追加するといった方法、ないでしょうか? もちろん、viで開いて追加する・・・というのではなく、、、 awkやsed等々、コマンドで。ご存知の方いらしたらお願いします。 ps. 余力があればjavaでも検討したいとは思いますが、javaはまったく初心者。。

  • 適切なシェルスクリプトの実行方法について

    シェルスクリプト内でi18nの再読み込みをするために . /etc/sysconfig/i18n と記述するとシェルスクリプト終了後にi18nの内容が反映されていません。 シェルスクリプト自体は ./shell1.sh という形で実行しています。 質問1:このようになるのは「./shell1.sh」と実行したスクリプトは 新たに作成された子プロセスによって実行される為、スクリプトが終了し 親プロセスに戻っても親自身は再読み込みを行なっていないから、という認識で間違いないでしょうか。 質問2:この現象の回避策として「source shell1.sh」とsourceコマンドで シェルスクリプトを実行する方法を試してみました。 実際に上手くいったのですが、「set -e」を使っているとエラー時に ログアウトしてしまうなどの弊害もありました。 他に適切な回避策に問題はないでしょうか。 ご存知のかた、お手数ですがご解答のほど宜しくお願い致します。

  • シェルスクリプト 結果表示

    はじめまして。 シェルスクリプトを教えてください。 質問 ・nslookupで指定したipアドレスの  接続結果が成功なら0を表示 失敗なら1を表示  するというのがつくれません。お願いします  なにかコマンドはコマンド結果に対して  バックで表示されないcodeがあるらしいのですが。 ちなみにsolarisで #!/bin/sh で宜しくお願いします

  • シェルスクリプト

    Apache centos6.6 シェルスクリプトの質問です。 shファイルを作りたいです。 home/user/log の中にある access_logとerror_logをgzに圧縮したいです。 条件は1日前のログです。 圧縮した後gzのファイルしか残らないのですが、次のアクセスログとエラーログはちゃんと出力されますか? どうかお願いします

  • シェルからPHPを実行したときの戻り値について

    PHPについては、かなり初心者です。 とんちんかんな質問をするかもしれませんが、 ご容赦ください。 今、linux系のOSで、 シェルスクリプトからPHPを実行する処理を作っています。 「/usr/local/bin/php xxxx.php」 という感じです。 この戻り値を、「$?」で取得すると、 正常に終了した場合は「0」、 処理が落ちた場合は「255」 が表示されるようなのですが、 この戻り値について、0、255以外の値を戻したいと思っています。 PHP内部で、特定の条件に当てはまった場合は、「2」をreturnしたいと思っています。 そのreturn値を使って、シェルスクリプトでif文で、判定処理を行いたいのです。 シェルスクリプト側で、PHPでの処理結果を変数に受ける方法があれば、 必ずしも「$?」を使う必要はないのですが・・・、 「$?」で「2」を取得できるのが一番理想です。 何か方法をご存知の方がいらっしゃいましたら、 よろしくお願いします。

    • ベストアンサー
    • PHP