次のページ 前のページ 目次へ

10. その他のスクリプト

10.1 read を使ってユーザの入力を読み込む

ユーザに何らかの入力を促したいと思う場合がよくあるものです。それを実現する方 法はいくつか存在しますが、以下はそれらのうちのひとつです。

        #!/bin/bash
        echo Please, enter your name
        read NAME
        echo "Hi $NAME!"
        

上記の変形として、read を使って複数の値を受け取ることもできます。 次の例題はそれを明らかにするものです。

        #!/bin/bash
        echo Please, enter your firstname and lastname
        read FN LN 
        echo "Hi! $LN, $FN !"
        

10.2 数値の評価

コマンドライン(あるいはシェル)で、次のように打ってみてください。

        $ echo 1 + 1
        

2 が出力されると期待していたなら、がっかりしたことでしょう。 bash に数値を計算させたいときは、どうしたらいいのでしょう? 解決策は次のようにすることです。

        $ echo $((1 + 1))
        

上記では、よりロジカルな出力がなされたことと思います。これは数式を評価した ということです。また、次のような表現でも同じことができます。

        $ echo $[ 1 + 1 ]
        

分数やあるいはもっと複雑な数学的処理が必要になった場合、あるいは数式で遊び たいときなどは、数式評価のための bc というコマンドが使えます。 コマンドプロンプト上で "echo $[3/4]" と実行しても、bash は 整数でしか答えを返せないので、結果は 0 となります。 しかし、"echo 3/4 | bc -l" と実行すれば、0.75 という正しい答 えが返ってきます。

10.3 bash を探す

Mike からのメッセージを掲載します。(謝辞を見てください)

あなたはいつも #!/bin/bash というのを使っていますが、bash がどこにあるのか探す方法を例示したほうがいいと思います。"bash をその 場所に置いてしまえばいいのですが、すべてのマシンがそれをしているわけではあり ません。ルートディレクトリから、'find ./ -name bash' を実行すれば通 常は探し出せるはずです。

チェックすべきなのは、次のような場所でしょう。

        ls -l /bin/bash
        ls -l /sbin/bash
        ls -l /usr/lodal/bin/bash
        ls -l /usr/bin/bash
        ls -l /usr/sbin/bash
        ls -l /usr/local/sbin/bash
        

(これ以外のディレクトリはすぐに思い浮かびません... システムが違っても、 これまではこの中から見つかる場合がほとんどでした。) それから、'which bash' を使ってみるのもいいと思います。

10.4 プログラムの戻り値を獲得する方法

bash では、プログラムの戻り値を $? という特殊な変数に入れて おくことができます。 以下は、プログラムの戻り値を獲得する方法を書いたものです。ただし、 /dada というディレクトリは実在しません。(これも Mike からの提案を 載せたものです)

        #!/bin/bash
        cd /dada &> /dev/null
        echo rv: $?
        cd $(pwd) &> /dev/null
        echo rv: $?
        

10.5 コマンド出力を獲得する方法

以下の簡単なスクリプトは、すべてのデータベース上を探して全部のテーブルを 表示するというものです( MySQL がインストールされていることが前提で す)。 この中の 'mysql' というコマンド部分を変更して、有効なユーザ名とパス ワードが使えるようにしてください。

        #!/bin/bash
        DBS=`mysql -uroot  -e"show databases"`
        for b in $DBS ;
        do
                mysql -uroot -e"show tables from $b"
        done
        

10.6 複数のソースファイル

コマンドソースとして複数のファイルを使うことができます。

作成予定( TO DO )


次のページ 前のページ 目次へ