私のソフトウェア用のインストールスクリプトがあり、LinuxとAIXで実行するにはこのスクリプトが必要です。
myinstaller.ksh
Linuxでは、次のラッパーを使用できます。
#!/usr/bin/ksh
script -c myrealinstaller.ksh /var/log/myinstaller.log
しかし、AIXではscript
この-c
オプションはサポートされていません。
myrealinstaller.ksh
スクリプトで生成された分岐シェルで私のプログラムをどのように実行しますか?
答え1
オペレーティングシステムを検出するようにラッパースクリプトを拡張できます。 Linuxで実行している場合はを実行しscript -c ...
、AIXで実行している場合はインストーラーを実行してから終了する上書きプロファイルをscript-shellに提供します。
$ cat myinstaller.ksh
#!/usr/bin/ksh
case $(uname -s) in
(Linux)
script -c myrealinstaller.ksh /var/log/myinstaller.log
;;
(AIX)
printf "ENV= ./myrealinstaller.ksh\nexit\n" > ./installer.profile
trap 'rm -f ./installer.profile' INT
ENV=./installer.profile script -q ./var/log/myinstaller.log
rm ./installer.profile
;;
esac
ローカルでテストするためにスクリプトとログのパスを調整しました。関連するその他の要素は次のとおりです。
ENV
呼び出し時にオーバーライドされる設定ファイルを指すように設定します。script
- 雰囲気をより静かに
script
するために電話をかけてみてください-q
- 重要、未設定実際のインストーラの呼び出し中にENVを使用するため、無限ループは発生しません。
- インストーラが完了したら、上書きされたプロファイルをすぐに終了するように指示します。
myrealinstaller.ksh の例は次のとおりです。
#!/bin/ksh
echo Hi, I am the real installer
./var/log/myinstaller.log の内容は次のとおりです。
Script command is started on Thu Mar 15 09:34:04 2018.
Hi, I am the real installer
Script command is complete on Thu Mar 15 09:34:04 2018.