ユーザに何らかの入力を促したいと思う場合がよくあるものです。それを実現する方 法はいくつか存在しますが、以下はそれらのうちのひとつです。
#!/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 !"
コマンドライン(あるいはシェル)で、次のように打ってみてください。
$ echo 1 + 1
2
が出力されると期待していたなら、がっかりしたことでしょう。
bash
に数値を計算させたいときは、どうしたらいいのでしょう?
解決策は次のようにすることです。
$ echo $((1 + 1))
上記では、よりロジカルな出力がなされたことと思います。これは数式を評価した ということです。また、次のような表現でも同じことができます。
$ echo $[ 1 + 1 ]
分数やあるいはもっと複雑な数学的処理が必要になった場合、あるいは数式で遊び
たいときなどは、数式評価のための bc
というコマンドが使えます。
コマンドプロンプト上で "echo $[3/4]
" と実行しても、bash
は
整数でしか答えを返せないので、結果は 0
となります。
しかし、"echo 3/4 | bc -l
" と実行すれば、0.75
という正しい答
えが返ってきます。
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
' を使ってみるのもいいと思います。
bash
では、プログラムの戻り値を $?
という特殊な変数に入れて
おくことができます。
以下は、プログラムの戻り値を獲得する方法を書いたものです。ただし、
/dada
というディレクトリは実在しません。(これも Mike からの提案を
載せたものです)
#!/bin/bash
cd /dada &> /dev/null
echo rv: $?
cd $(pwd) &> /dev/null
echo rv: $?
以下の簡単なスクリプトは、すべてのデータベース上を探して全部のテーブルを
表示するというものです( MySQL
がインストールされていることが前提で
す)。
この中の 'mysql
' というコマンド部分を変更して、有効なユーザ名とパス
ワードが使えるようにしてください。
#!/bin/bash
DBS=`mysql -uroot -e"show databases"`
for b in $DBS ;
do
mysql -uroot -e"show tables from $b"
done
コマンドソースとして複数のファイルを使うことができます。
作成予定( TO DO )