Linux勉強(シェルスクリプト、プログラミング)
シェルとは…カーネルとユーザの橋渡しをしてくれる
シェルスクリプトとは…ユーザが長いコマンドやいくつものコマンドをいちいち打たなくていいように、自動的に行わせる方法
シェルスクリプト作成
- test.sh等、ファイルを作る
- 1行目に#!/bin/bashと、利用するシェルを指定する文章を書く
- 後はほかの言語のようにifやfor等を使ってプログラミング
シェルスクリプトを実行するには実行権限を与えるか、bash シェルスクリプト名で実行
シェルスクリプトでのコマンド
- echo オプション 文字列もしくは変数 文字列もしくは変数を出力、オプションに-nをつけると改行されなくなる
- read 変数名 標準入力からデータを読み込む
- set シェル変数の一覧を表示する、環境変数の一覧を表示したい場合はenvで
- unset 変数名 変数名のシェル変数を削除 、環境変数の場合はexportで値を設定しない変数を作る 例:a=
- source source /etc/init.d/aaa.shというふうに使うと、 ほかの/etc/init.d/aaa.shというシェルスクリプトを読み込むことができる
コメントは行の頭に#をつける、つけた行はコメント行になる
引用符…'は全部文字列として認識、"は変数があればその変数を展開、`はコマンドを囲む時に使い、その結果を変数に代入する
引数… シェルスクリプトを実行する時に、test.sh a b cという風に引数を渡すと、内部で左から$1、$2、$3...というふうに扱われる
特殊な文字列…"等の特殊な文字列を表示させたい場合は 、sedの時みたいに"の前に\をつける
1行が長くなる場合、行末に\をつけることで途中で折り返すことができる
シェルスクリプトでのプログラミング
変数
- 代入は$無しで、変数の値を使う時は$有りで使う
- a=1といったように、変数と=と数値等の間には空白を入れない
- a[1]といったようにすれば、配列を使うことができる
- 配列の中身を表示する時は${a[1]}といったように、$以外を{}で囲む
- 変数の前にexportをつけると環境変数になり、ほかのシェルスクリプトからも変数を呼び出せる
条件分岐の例文
if文
if [ 条件式 ];then
処理
elif [ 条件式 ];then
処理2
else
処理3
fi
case文
case 変数 in
値1)
処理1;;
値2)
処理2;;
esac
繰り返し
for文
for 変数 in 値のリスト
do
処理
done
while、until文
while 条件式
do
処理
done
until文はwhileの部分をuntilに変えるだけ
while文は条件が成立している間、until文は条件が成立していない間ループをまわす
ほかの言語でのforみたいに使う場合は、exprコマンドを使ってループカウンタ用の変数に数値を加算もしくは減算してやればいい
select文
select 変数 in リスト
do
処理
done
ユーザに入力をさせ、その入力に対応している物をリストから出してきて、表示させたりできる
繰り返しの制御
breakを使うとループから抜けることが、continueを使うとループの先頭に戻ることができる
サブルーチン
function 関数名
{
処理
}
で、関数を作ることができる
頭のfunctionは別につけなくてもいい
returnを使えば返り値を使うことができる