Scripting
在 AIX 上使用 script 命令安裝腳本
我的軟體有一個安裝腳本,我需要它在 Linux 和 AIX 上執行。
在 Linux 上,我可以使用這樣的包裝器
myinstaller.ksh
:#!/usr/bin/ksh script -c myrealinstaller.ksh /var/log/myinstaller.log
但在 AIX
script
上不支持該-c
選項。如何
myrealinstaller.ksh
在腳本創建的分叉外殼中執行我的?
您可以增強包裝腳本以檢測作業系統;如果它在 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.