Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
linux脚本-子字符串和附加与unix的兼容性_Linux_Unix - Fatal编程技术网

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

linux脚本-子字符串和附加与unix的兼容性,linux,unix,Linux,Unix,我正在尝试使我的以下脚本与其他平台(unix)兼容,我不确定它是否会兼容。尤其是[[test]]和%%#符号是兼容的。至少这个脚本在linux上运行良好 如果有人(熟悉unix)能够提供一些建议或修复,使以下脚本能够跨平台(windows除外)移植,那就太好了 这不是操作系统之间的兼容性问题,而是shell之间的兼容性问题 您的脚本是为类似bash的shell编写的,因此只需替换第一行#/bin/shby#/bin/bash(或bash所在的任何路径),以便它在其他系统上工作(不要忘记在这些系统

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

如果有人(熟悉unix)能够提供一些建议或修复,使以下脚本能够跨平台(windows除外)移植,那就太好了


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

您的脚本是为类似bash的shell编写的,因此只需替换第一行
#/bin/sh
by
#/bin/bash
(或
bash
所在的任何路径),以便它在其他系统上工作(不要忘记在这些系统上安装
bash


注意:这个脚本在使用shebang
#的Linux上运行/bin/sh
可能是因为您的Linux发行版选择通过指向
bash
的链接来替换旧式
sh
,或者您使用bash显式运行脚本,如下所示:
bash./script.sh

这甚至与Linux不兼容。您的脚本以
#开头/bin/sh
,它将运行POSIX shell或在POSIX兼容模式下运行bash,并且您的条件使用
[…]]
,这是一种不属于POSIX的bash ism。参数扩展-
%%
#
应该很好(它们非常通用)。看看其他平台上有哪些东西可用。并在上测试您的脚本。
#!/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