csh:如何将变量从下标传递到父脚本

时间:2015-11-02 18:13:26

标签: csh

我想将我在下标中设置的变量传递给父脚本。我希望将其作为一个函数或仅通过“回显”变量来实现:

parent.sh

#!/bin/csh
enter code here
set VAR_2_CHILD_1 = myName
set VAR_2_CHILD_2 = MAIN_PATH/output.txt

$MAIN_PATH/child.sh $VAR_2_CHILD_1 $VAR_2_CHILD_2

child.sh

#!/bin/csh

if ($1 =~ *something*) then
    set NAME_SL     =  False
    set SUBDIRID    =  True
    echo $1 $SUBIDDIR       >> $2
endif

echo $NAME_SL $SUBDIRID

或:

#!/bin/csh

function pass_var() {

if ($1 =~ *something*) then
    set NAME_SL     =  False
    set SUBDIRID    =  True
    echo $1 $SUBIDDIR       >> $2
endif

return $NAME_SL $SUBDIRID
}

在后一种情况下,我不知道如何在parent.sh中调用该函数

通常,下标应根据$ VAR_2_CHILD_1和VAR_2_CHILD_2选择并返回一些字符串变量$ NAME_SL和$ SUBDIRID。我不知道怎么做。

我也在这里阅读其他问题:Bash - Return value from subscript to parent script但我找不到任何对我有用的问题。

1 个答案:

答案 0 :(得分:0)

啊!你很高兴我的心。写了10年的csh(使用csh,sed,awk和pipe)。刚检查了我的存档:650个脚本和51000行。然后,我发现了perl并切换了一切。目前的perl是770个文件和206,000行。

无论如何,有些事情。 csh没有函数,所以你需要使用child.sh。 (请使用.csh或无后缀 - bash得到太多关注,因为它是: - )

请注意,csh 具有别名。 csh别名比bash别名更强大,因为它们可以接受参数列表。您可以使用;获得多线脚本的效果,但这是限制性的。

父级可以通过virgule运算符捕获子输出[脚本或别名]:

#!/bin/csh
# enter code here
set VAR_2_CHILD_1 = myName
set VAR_2_CHILD_2 = MAIN_PATH/output.txt

set result=(`$MAIN_PATH/child.sh $VAR_2_CHILD_1 $VAR_2_CHILD_2`)
set NAME_SL="$result[1]"
set SUBDIRNAME="$result[2]"

子调用周围的括号是因为孩子正在返回两个单词,所以你需要一个数组来捕获它们[如果你想独立操作它们]

相关问题