2017-03-09 66 views
0

我想讓我的以下腳本與其他平臺(UNIX)兼容,我不知道它是否會。特別是[[test]]和%%#符號是兼容的。這個腳本至少可以在linux上正常工作。linux腳本 - 子字符串和附加兼容性與unix

如果有人(熟悉unix)可以提出一些建議或修復以使腳本跨平臺(Windows除外)可移植,那將會很棒。

#!/bin/sh 


INSTALL_HOME=/opt/prod/install0308 
export INSTALL_HOME 

export CONF_INSTALL_ARGS="-Dinstall.ext.dir=/opt/prod/installExt -Dinstall.alternateExtDir=/opt/dev/installExt/lib -Dinstall.type=OSD" 



INSTALL_ALTERNATIVE_TYPES_DIR='' 

if [[ ${CONF_INSTALL_ARGS} == *'-Dinstall.alternateExtDir'* ]]; then 
    INSTALL_ALT_TYPE_DIR_TEMP=${CONF_INSTALL_ARGS#*-Dinstall.alternateExtDir=} 
    INSTALL_TYPE_DIR=${INSTALL_ALT_TYPE_DIR_TEMP%%-D*} 
    FINAL_INST_TYPE_DIR="$(echo -e "${INSTALL_TYPE_DIR}" | sed 's/ *$//g')" 
    INSTALL_ALTERNATIVE_TYPES_DIR=','$FINAL_INST_TYPE_DIR 
fi 

TOTAL_CONF_ARGS="-Dinstall.ext.dir=${INSTALL_HOME}/lib/provider,${INSTALL_HOME}/lib/security${INSTALL_ALTERNATIVE_TYPES_DIR}" 

echo $TOTAL_CONF_ARGS 
+0

即使在Linux下也不兼容。您的腳本以'#!/ bin/sh'開頭,它將運行POSIX shell或以POSIX兼容模式運行bash,並且您的條件使用'[[...]]',一個不是部分的bash主題的POSIX。參數擴展 - '%%'和'#'應該沒問題(這些非常普遍)。在其他平臺上查看[sh的手冊頁](https://www.freebsd.org/cgi/man.cgi?query=sh),以查看可用的類型。並在http://shellcheck.net/上測試您的腳本。 – ghoti

回答

0

這不是操作系統之間的兼容性問題,這是Shells之間的兼容性問題。

您的腳本已爲bash類似的貝殼寫的,所以你只需要更換的第一行#!/bin/sh通過#!/bin/bash(或者bash位於任何路徑)爲它在其他系統上運行(不要忘記安裝bash在他們)。

注:此腳本適用於您的Linux與家當#!/bin/sh可能是因爲你的Linux發行版選擇了一個鏈接,以取代傳統的shbash,或者你正在運行的明確使用bash腳本是這樣的:bash ./script.sh