shell中的命令行参数

时间:2017-04-03 10:08:24

标签: shell command-line-arguments

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

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

完整的解释:

**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中即可。
  如何实现?

2 个答案:

答案 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的投入我尝试了你建议的所有内容,但没有任何对我有用 非常感谢。