linux 脚本 - 与 unix 的子字符串和追加兼容性

标签 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

最佳答案

这不是操作系统之间的兼容性问题,这是 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/

相关文章:

linux - 如何使用 DockerFile 从 git repo 获取源代码

c - 错误的文件描述符

c - 在 Unix 内核中发现的 C 语言的匿名结构

perl - 如何检查哪种检查端口状态的方法更有效?

linux - 如何通过ssh在多台服务器上执行命令?

c - 如何将自己的输出通过管道传递给另一个进程?

linux - 目录大小奇怪。尺寸过大

linux - 获取安装在数组变量 BASH 中的 yum list

php - 使用 777 写入文件夹

python - 内存映射会随着时间的推移而变慢,还有其他选择吗?