Scripting

在 AIX 上使用 script 命令安裝腳本

  • March 15, 2018

我的軟體有一個安裝腳本,我需要它在 Linux 和 AIX 上執行。

在 Linux 上,我可以使用這樣的包裝器myinstaller.ksh

#!/usr/bin/ksh
script -c myrealinstaller.ksh /var/log/myinstaller.log

但在 AIXscript 上不支持該-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.

引用自:https://unix.stackexchange.com/questions/430389