我有两个脚本,一个在另一个脚本中调用。
我正在尝试使用命令行参数来运行它们,但问题是,参数没有反映到第二个脚本中。
完整的解释:
**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
脚本2 : dump.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 或的 file_list中即可。
如何实现?
答案 0 :(得分:0)
不完全确定我是否明白你要做什么..但你为什么不这样做:
SCRIPT1:
# 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""
在你的情况下,我仍然不清楚,我猜你需要这样的东西:
Script1
# 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 chain
Script1将为您运行以下命令并将输出保存在变量中:
/path/to/your/simulation/program -input Script2.sh edt_intest chain
答案 1 :(得分:0)
我的脚本是用另一种方法工作的
使用&#39; sed&#39; 命令。首先,我使用sed命令将命令行参数反映到 dump.sh 文件中,然后重定向到另一个文件。
感谢SB87的投入我尝试了你建议的所有内容,但没有任何对我有用
非常感谢。