2013-02-06 247 views
0

下面是我寫的腳本。Shell腳本聲明日期變量

#!/usr/bin/expect -f 
#!/bin/bash 

# connect via scp 

Y_DATE=`$(date --date yesterday "+%Y-%m-%d")` 

spawn scp /apps/Train/jboss-soa-p.5.0.0/jboss-as/server/default/log/server.log.$Y_DATE "[email protected]:/apps/software/copiedLogFiles/" 

expect "password:" 
send "buildadmin\$123\r" 
expect "*\r" 
expect "\r" 

我在執行腳本時遇到錯誤。

can't read "(date --date yesterday "+%Y-%m-%d")": no such variable 
    while executing 
"Y_DATE=`$(date --date yesterday "+%Y-%m-%d")`" 
    (file "./copySITtoUAT_CDS.sh" line 6) 

我無法弄清楚Y_DATE聲明中的錯誤是什麼?我在這裏錯過了什麼。

回答

2

也許是這樣的:你可以使用

Y_DATE=$(date --date yesterday "+%Y-%m-%d") 

Y_DATE=`date --date yesterday "+%Y-%m-%d"` 

但不能同時使用。

+3

最好'$()'(簡化當它到達嵌套)。 – Jite

+0

@fedorqui我嘗試使用其中任何一個,我得到同樣的錯誤。 –

0

我修改了我的腳本,如下所示,它的工作。

#!/bin/sh 

LOG_DIR=/apps/jboss/jboss-soa-p.5.0.0/jboss-as/server/mssql_prod1/log 
SRS_HOST=XPSIT 
USER_ID=xambas 
PSWD=abackc 
Y_DIR=`find $LOG_DIR -name "server.log*" \(-mtime -1 -and -not -daystart -mtime 0 \)` 
cd $LOG_DIR 
Y_FILE=`find . -name "server.log*" \(-mtime -1 -and -not -daystart -mtime 0 \)` 
cd - 
export Y_FILE SRS_HOST USER_ID PSWD Y_DIR 

expect -c ' 
     spawn scp "$env(Y_DIR)" "$env(USER_ID)@$env(SRS_HOST):/apps/soft/Prod_LOG/Prod_A/$env(Y_FILE)" 
     expect "password:" 
     send "$env(PSWD)\r" 
     expect "*\r" 
     expect "\r" 
0

下面的代碼工作:

Y_DATE=`date --date yesterday +%Y-%m-%d`