Linux 声明日期变量的Shell脚本
下面是我写的剧本Linux 声明日期变量的Shell脚本,linux,shell,date,unix,Linux,Shell,Date,Unix,下面是我写的剧本 #!/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 "xxxx@Tdev:/apps/software/copiedLogFiles/" expect "p
#!/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 "xxxx@Tdev:/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_日期声明中的错误是什么?我是不是遗漏了什么。也许是这样的:你可以用其中一种
Y_DATE=$(date --date yesterday "+%Y-%m-%d")
或
但不是两者都有。我修改了我的脚本,如下所示,它成功了
#!/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"
以下代码起作用:
Y_DATE=`date --date yesterday +%Y-%m-%d`
最好是$()
(在嵌套时简化)。
Y_DATE=`date --date yesterday +%Y-%m-%d`