在同一脚本中运行bash命令和csh命令

时间:2016-08-10 14:11:39

标签: bash shell freebsd csh

我正在完成一个项目,我看到有两个脚本:

一个在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

1 个答案:

答案 0 :(得分:1)

你的示例脚本无论如何都没有意义; shell脚本无法在其父进程中设置变量。

对于肤浅的兼容性黑客,你可以声明一个函数setenv;那么你的大多数示例脚本都将在sh中运行。

setenv () {
    "$1"=$2
    export "$1"
}

我认为你的if子句在两个shell中都是语法错误。我无法想到一种可以便携式编写它的方法,但我的建议是无论如何都要放弃csh