【问题标题】:command line argument in shell [duplicate]shell中的命令行参数[重复]
【发布时间】:2017-04-07 18:39:47
【问题描述】:

我有两个脚本,一个被另一个调用。

我正在尝试使用命令行参数运行这些,但问题是,参数没有反映到第二个脚本中。

完整解释:

**Script 1 : run_simulation**  
prelayout_${1}_${2}.v.gz  
-input dump.sh      
**Script 2 : dump.sh**  
prelayout__${1}_${2}_tetsbench_ctl.

现在当我执行./run_simulation edt_intest chain 两个参数都反映在第一个脚本中,但没有反映在第二个脚本中,即它仍在读取prelayout__${1}_${2}_tetsbench_ctl

那么,如何将参数导出到 dump.sh ?
提前致谢。

使用的工具是 irun(ncsim)
脚本 1: run_simulate

`irun \`  
`-v lib1 \`  
`-v lib2 \`  
`./prelayout_${1}_${2}_testbench.v.gz \`  <-- this is testbench  
`-input dump.sh \`  
`-f file_list \`
`-top prelayout_${1}_${2}_testbench_v_ctl \`  <-- top module of testbench  
`+notimingchecks \`  
`-log ${1}_${2}.log`   <-- log file

脚本 2dump.sh

`set tb_top prelayout_${1}_${2}_testbench_v_ctl`
`force $tb_top.q_reg1.Q 1`  
`force $tb_top.q_reg2.Q 1`  

因此,当我运行命令 ./run_simulate edt_intest chain 时,run_simulate 中的所有变量都会更新,但 dump.sh 中不会更新或文件列表
如何实现?

【问题讨论】:

  • 为什么不直接从第一个脚本中调用第二个脚本,然后将 ${1} 和 ${2} 添加到参数中?
  • 您的意思是使用“-input dump.sh ${1} ${2}”吗?如果是。我已经尝试过它不接受它并给出错误。 “-input”也是一个模拟工具选项,不确定它会接受它。

标签: shell command-line-arguments


【解决方案1】:

不完全确定我是否理解你想要做什么.. 但你为什么不这样做:

脚本1:

# Do Something
prelayout_${1}_${2}.v.gz  
# Do Something
./Script2.sh "$1" "$2"

这将使脚本 2 使用与执行脚本 1 相同的参数执行。

或者,如果您需要将脚本 2 的输出保存在变量中,请执行以下操作:

# Do Something
prelayout_${1}_${2}.v.gz  
# Do Something
INPUT_VAR="$(/bin/bash Script2.sh "$1" "$2")"

或者,如果您想要更大的灵活性:

# Do Something
prelayout_${1}_${2}.v.gz  
# Do Something
ACTIVATE_SCRIPT2="$(/bin/bash Script1.sh)"
OUTPUT_SCRIPT2="$ACTIVATE_SCRIPT2 "$1" "$2""

在你的情况下,我仍然不清楚,我想你需要类似的东西:

脚本1

# Do Something
prelayout_${1}_${2}.v.gz  
# Do Something
INPUT_SCRIPT2_INTO_SIMULATION_PROGRAM="$(/path/to/your/simulation/program -input Script2.sh "$1" "$2")"

如果你这样做:

./Script1.sh edt_intest chainScript1 将为您运行以下命令并将输出保存在变量中:

/path/to/your/simulation/program -input Script2.sh edt_intest chain

【讨论】:

  • 嗨 SB87,我正在尝试概括模拟脚本。对于该 script2 必须使用“-input”选项包含在 script1 中。有了这个选项,我就不能使用参数了。
  • 查看编辑后的答案。 -input 选项是什么意思? Bash 没有这样的选项..
  • "-input" 是一个模拟工具选项,而不是 bash。它用于读取文件以转储波形或强制某些信号。而且我不能单独获取必须带有“-input”的script2(dump.sh)。
  • 我真的不明白你想要达到什么目的..simulation tool 是什么意思?您可以链接到使用它的示例吗?我以前从未见过它。否则,请发布您用来执行脚本的确切命令行。因为您现在拥有的./run_simulation edt_intest chain 仅用于运行单个脚本..
  • 是的,你说得对,“./run_simulation edt_intest 链”适用于一个脚本,但该脚本需要另一个文件/脚本,我需要 ${1} 来表示 edt_intest 和 ${2} =链,我怎样才能做到这一点?我们可以放弃与模拟工具相关的问题,但问题是我需要 -input(这是一个特定于工具的选项),并且使用此选项我需要将 $1 和 $2 的值导出到 script2 中,如 script1 中所识别的那样。
【解决方案2】:

我的脚本通过另一种方法运行。
使用 'sed' 命令。首先,我使用 sed 命令将命令行参数反映到 dump.sh 文件中,然后重定向到另一个文件。
感谢 SB87 的输入 我尝试了所有方法您提出了建议,但对我没有任何帮助。
非常感谢。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-04
    • 2022-07-26
    • 2012-08-15
    • 1970-01-01
    • 1970-01-01
    • 2013-03-03
    相关资源
    最近更新 更多