我正在尝试使我的以下脚本与其他平台 (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
最佳答案
这不是操作系统之间的兼容性问题,这是 Shell
之间的兼容性问题。
您的脚本是为类似 bash 的 shell 编写的,因此您只需将第一行 #!/bin/sh
替换为 #!/bin/bash
(或 bash
所在的任何路径)以便它在其他系统上工作(不要忘记在它们上安装 bash
)。
注意:此脚本可以在您的 Linux 上使用 shebang #!/bin/sh
运行,这可能是因为您的 Linux 发行版已选择通过指向 bash
或者您正在使用 bash 显式运行脚本,如下所示:bash ./script.sh
。
关于linux 脚本 - 与 unix 的子字符串和追加兼容性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42703826/