Quantcast
Channel: Bashタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 2914

シェルプログラミング入門 2

$
0
0

シェル変数

シェルプログラミング入門1の続き

シェル変数の作り方

シェル変数の名前はアルファベッド、数字、_を使う。
ただし、1文字目に数字は使えない。
普通はアルファベッドの大文字を使う。

variable=variable

variable = variable #スペースを入れてはいけない

シェル変数の値を見たり操作したりする時は$variableのようにする。${variable}でも同じ。

% pwd
/
% DIR=/tmp
% cd$DIR
% pwd
/tmp

中括弧をつけるかつけないかの違いは

% FOO=abc
% echo$FOOBAR

% echo${FOO}BAR
abcBAR

ただし、$DIR/work$ROOT.cのようにアルファベット、数字,_以外の文字を使うとシェル変数の区切りとみなされるので、{}を付けなくてもよい。

nullのシェル変数

VARIABLE=VARIABLE=""

シェル変数の初期設定

変数の設定方法は以下の4つがある。

${variavle:=value}${variavle:-value}${variavle:?value}${variavle:+value}

:は省略可能。 :があると変数が未使用もしくはnullのとき変数を設定する。:がないときは変数が未使用のときのみ動作する。

位置パラメタ

nnn
#!/bin/shecho$0$1$2$3$4$5$6$7$8$9
% chmod +x nnn
% ./nnn a b c d e f g h i j k l m n
./nnn a b c d e f g h i
%
% ./nnn *
./nnn abc append nnn xyz

shiftを使えば、ずらすことができる。

nnn
#!/bin/shshift 3
echo$0$1$2$3$4$5$6$7$8$9
% ./nnn a b c d e f g h i j k l m n
./nnn d e f g h i j k l

あるコマンドに渡される引数の数を示すには$#という変数を使う。
ただし、コマンド自身は数に入れない。

mmm
#!/bin/shecho$#
% chmod +x mmm
% ./mmm a b c
3
% ./mmm "a b c"
1

引数全体を表現するには$*$@がある。

kkk
#!/bin/shecho$*echo$@
% chmod +x kkk
% ./kkk a b c
a b c
a b c

ただし、"$@"としたいときは"$1 $2 $3"
"$*"としたいときは"$1" "$2" "#3"としなければならない。

ちなみに\$0〜\$9,\$#,\$*,\$@は全て書き込み禁止の変数である。

特殊な変数

$?,$$,$!,$-の4つの書き込み禁止の特殊な変数がある。

$?変数

コマンド実行時の終了ステータスを表す。

command
if[$?-eq 0]
then・・・・・・・・
fi

$$変数

現在動作しているコマンドの「プロセスID」がセットされている。

psコマンドで動作しているプロセスが表示される。

% ps
  PID TTY           TIME CMD
  750 ttys000    0:00.19 -zsh

このPIDがプロセスIDのことである。

/tmp/tmp.$$のようにしてテンポラリファイルを作るときに使用する。

$!変数

&でコマンドをバックグラウンドで走らせたときのプロセスID
が$!にセットされる。

command&
 ・・・・
wait$&

$-変数

シェルの起動時のフラグやsetコマンドを使って設定したフラグの一覧がセットされている。

% echo$-
569XZilms

Viewing all articles
Browse latest Browse all 2914

Trending Articles