MENU

引数について

引数の使い方(引数が有る場合と無い場合)を検証します。

 

 

事前にホームディレクトリにa.txtを作成する。
[root@centos52 ~]# touch a.txt

 

a.txtのシンボリックリンクをaと言う名前で作成する。
[root@centos52 ~]# ln -s a.txt a

 

定義されている関数を表示する。
何も定義していないため、何も表示されない。
[root@centos52 ~]# declare -f

 

functionコマンドを使用して関数を定義します。

 

関数「lslink」を実行した際に、
「ls -l | grep '^l'」が実行されるように設定。
[root@centos52 ~]# function lslink() { ls -l | grep '^l'; }

 

定義した関数を表示する。
[root@centos52 ~]# declare -f

lslink ()
{
ls --color=tty -l | grep '^l'
}

関数の実行。先程のシンボリックリンク「a」が表示される。
[root@centos52 ~]# lslink

lrwxrwxrwx 1 root root 5 8月 30 13:15 a -> a.txt

 

「lslink /etc」として実行。「/etc」部分は無視されている挙動。
「lslink」として実行した時と同じく、ホームディレクトリ直下を
検索している。
[root@centos52 ~]# lslink /etc

lrwxrwxrwx 1 root root 5 8月 30 13:15 a -> a.txt

 

関数「lslink」の削除。
[root@centos52 ~]# unset lslink

 

定義した関数を表示する。問題なく削除されていることを確認。
[root@centos52 ~]# declare -f

 

終了。
[root@centos52 ~]# exit

 

今度は、引数を使用して定義します。
[root@centos52 ~]# function lslink() { ls -l $1 | grep '^l'; }

 

再度「lslink /etc」を実行します。
[root@centos52 ~]# lslink /etc

lrwxrwxrwx 1 root root 22 1月 7 2009 grub.conf -> ../boot/grub/grub.conf
lrwxrwxrwx 1 root root 11 1月 7 2009 init.d -> rc.d/init.d
............

 

今度は、引数に「/etc」が代入されたと見なされたため、
/etcのシンボリックリンクを検索できました。

 

 

 

引数を表す変数を検証します。

 

aaaと言うファイルを作成します。
中身は以下の4行です。
echo $0
echo $1
echo $2
echo $#

 

aaaに実行権限を設定した後、実行してみます。

 

1番目の引数にbbbと入力しました。
[root@centos52 ta]# ./aaa bbb

./aaa
bbb

 

1

 

1行目は変数「$0」の結果として「./aaa」が表示されました。
「$0」はフルパスでシェルスクリプトファイル名を表示する変数です。
2行目は変数「$1」の結果として「bbb」が表示されました。
「$1」は1つ目の変数の内容を表示する変数です。
3行目は変数「$2」の結果として、何も表示されませんでした。
「$2」は2つ目の変数の内容を表示する変数です。
4行目は変数「$#」の結果として「1」が表示されました。
「$#」は引数の数を表示する変数です。

 

 

 

引数を表す変数の1つである「$?」を検証します。

 

 

「$?」は戻り値を表す変数です。
色々なコマンドを実行した際に、
正常終了した場合はシェルに戻り値「0」を返します。
正常終了しなかった場合はシェルに「0以外の数字」を返します。

 

[root@centos52 ta]# cat aaaaaa

cat: aaaaaa: そのようなファイルやディレクトリはありません

[root@centos52 ta]# echo $?

1

[root@centos52 ta]# cat aaa

echo $0
echo $1
echo $2
echo $#

 

 

[root@centos52 ta]# echo $?

0