我有用数据填充表的脚本。 我需要在另一个表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
为什么?
答案 0 :(得分:1)
shell评估的工作方式,它将首先替换变量的内容,然后将命令行解析为以空格分隔的参数。要覆盖它,您必须引用变量内容中的空格。
最方便的是在$dtMODEL
附近添加“引号”,即
./record_table_load_stats.sh MODEL "$dtMODEL"