我正在完成一个项目,我看到有两个脚本:
一个在bash中运行,另一个在csh中运行。
有没有办法合并这两个文件并作为单个脚本和一个文件运行,意味着在合并之后不应该有早期的文件?这样可以减少代码大小,并且更加用户友好。
例如:
#!/bin/sh
setenv PROJ_ROOT $PWD
setenv PROJ_OS freebsd
setenv OS freebsd
#!/bin/csh
export ICP=`pwd`
#both /sh
if `uname -r | grep -c "10.2-RELEASE"` == 1 setenv PROJ_WITHOUT_THREAD 1
答案 0 :(得分:1)
你的示例脚本无论如何都没有意义; shell脚本无法在其父进程中设置变量。
对于肤浅的兼容性黑客,你可以声明一个函数setenv
;那么你的大多数示例脚本都将在sh
中运行。
setenv () {
"$1"=$2
export "$1"
}
我认为你的if
子句在两个shell中都是语法错误。我无法想到一种可以便携式编写它的方法,但我的建议是无论如何都要放弃csh
。