Linux勉強(シェルスクリプト、プログラミング)

シェルとは…カーネルとユーザの橋渡しをしてくれる 

シェルスクリプトとは…ユーザが長いコマンドやいくつものコマンドをいちいち打たなくていいように、自動的に行わせる方法

 シェルスクリプト作成

  1. test.sh等、ファイルを作る
  2. 1行目に#!/bin/bashと、利用するシェルを指定する文章を書く
  3. 後はほかの言語のように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

 論理積、論理和はC言語と同じで&&と||でできる

繰り返し

 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を使えば返り値を使うことができる