前回は実用的なシェルスクリプトの例として,
バージョン取得用関数
オープンソースソフトウェア
以前にも紹介したように,
前回紹介したようにPlamo Linuxの場合,
リスト1 パッケージ情報の例
PACKAGE NAME: bash-3.2.39-i386-P1
COMPRESSED PACKAGE SIZE: 1213 K
UNCOMPRESSED PACKAGE SIZE: 2190 K
PACKAGE LOCATION: /var/adm/mount/plamo/00_base/bash-3.2.39-i386-P1.tgz
...
バージョン番号はパッケージ名の一部として PACKAGE NAME: 行に記録されているので,
シェルスクリプトでは,
リスト2 バージョン番号取得スクリプト
1 get_version() {
2 local old_name=`cat /var/log/packages/$1 | grep "^PACKAGE NAME" | cut -f2 -d':' `
3 local old_vers=`echo $old_name | cut -f2 -d'-'`
4 echo $old_vers
5 }
2行目と3行目にあるlocalという宣言は,
2行目にある$1は関数に与えた引数の指定で,
パイプの後半ではgrepコマンドで
シェルスクリプトでは,
バージョンチェック用関数
次に,
リスト3 バージョンの比較スクリプト
1 check_vers() {
2 local old=$1
3 local new=$2
4
5 for i in 1 2 3 4 5; do
6 t1=`echo $old | cut -f$i -d'.'`
7 t2=`echo $new | cut -f$i -d'.'`
8 if [ $t2 -gt $t1 ]; then
9 return $t2
10 fi
11 done
12 return 0
13 }
この関数では5行目から11行目のループの部分で,
8行目はシェルのtest 機能([ .. ])を用いて,
x.
一方,
なお,