【问题标题】:Passing a pre-defined variable from shell script to shell script in Linux在 Linux 中将预定义变量从 shell 脚本传递到 shell 脚本
【发布时间】:2015-03-26 15:07:44
【问题描述】:

这是我第一次使用 shell 脚本。

我有一个“母亲”脚本mainscript.sh,我在其中定义了变量patientid

patientid=`basename $folder`

稍后在同一个脚本中,我希望执行一个单独的脚本example.sh,同时将变量patientid 传递给它。该脚本中已经包含标记为“$patientid”的变量。看看下面的mainscript.sh

./example.sh #I WANT TO PASS THE VARIABLE patientid INTO HERE!

我知道这对你们来说很容易。任何帮助表示赞赏!谢谢。

【问题讨论】:

  • example.sh 是否仅引用 $patientid 还是将其设置在某处,例如在 patientid=somevalue 中?

标签: linux bash shell variables sh


【解决方案1】:

也许,你需要的是通过命令行参数传递参数,即:

./example.sh $patientid

在主脚本中和

patientid=$1

example.sh 脚本中。

【讨论】:

  • 那么,拥有patientid=$1 将自动在example.sh 中定义它,就像在mainscript.sh 中定义的方式一样?只需在执行命令后加上$patientid
  • 对。 ./example.sh $patientid 将使用$patientid 作为命令行参数执行./example.sh。另一方面,脚本example.sh 将能够以$1(这是第一个命令行参数的标准名称)访问该参数,并通过执行patientid=$1 将其分配给patientid。显然,这条命令会覆盖example.shpatientid的旧内容。
【解决方案2】:

在调用example.sh之前,标记patientid以导出到子进程的环境(例如将运行example.sh的shell):

export patientid

【讨论】:

    【解决方案3】:

    您可以使用一组预定义的变量来运行任何 shell 脚本(实际上,甚至是二进制程序)

     VAR1=value1 VAR2=value2 ... script.sh
    

    例如

     patientid=$patientid mainscript.sh
    

    这假设一个 Bourne-heritage shell (sh, bash, ash, ksh, zsh, ...)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-10-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-29
      • 1970-01-01
      相关资源
      最近更新 更多