linux脚本 - substring和append与unix的兼容性

时间:2017-03-09 19:25:52

标签: linux unix

我正在尝试使我的以下脚本与其他平台兼容(unix),我不确定它是否会。特别是[[test]]和%%#符号兼容。至少这个脚本在linux上工作正常。

如果有人(熟悉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

1 个答案:

答案 0 :(得分:0)

这不是操作系统之间的兼容性问题,这是Shells之间的兼容性问题。

您的脚本是针对类似bash的shell编写的,因此您只需将第#!/bin/sh行替换为#!/bin/bash(或bash所在的任何路径),在其他系统上工作(不要忘记在其上安装bash)。

注意:此脚本可以在您的Linux上使用shebang #!/bin/sh,因为您的Linux发行版选择通过指向sh的链接替换旧版bash,或者您明确运行脚本像这样的bash:bash ./script.sh