将timestamp变量作为参数传递给另一个脚本

时间:2013-10-15 17:53:37

标签: shell oracle11g sqlplus

我有用数据填充表的脚本。 我需要在另一个表STATS中记录,当它开始加载时和完成加载时。

因此,在第一个脚本中,我将时间戳存储到变量中:

**script1.sh**
    dtMODEL=$(date +"%d-%b-%y %H.%M.%S.%N %p")
    ./load_table.sh source1
    ./load_table.sh source2
    ./record_table_load_stats.sh MODEL $dtMODEL

**record_table_load_stats.sh**
   #! /bin/bash
   #
   . /etc/profile.d/oracle.sh

   MODEL=$1
   START_DATE=$2
   echo $MODEL
   echo $START_DATE
   sqlplus -s username/password<< !
   /* this is where I wanna use START_DATE variable and populate table*/

当我这样做时:

echo $dtMODEL

15-Oct-13 13.56.46.677879674 PM

但是当我将它传递给record_table_load_stats.sh时,它会回显

15-Oct-13

为什么?

1 个答案:

答案 0 :(得分:1)

shell评估的工作方式,它将首先替换变量的内容,然后将命令行解析为以空格分隔的参数。要覆盖它,您必须引用变量内容中的空格。

最方便的是在$dtMODEL附近添加“引号”,即

./record_table_load_stats.sh MODEL "$dtMODEL"