Переменная интерполяция в ожидаемом - PullRequest
0 голосов
/ 31 мая 2018

Этот ожидаемый сценарий не может интерполировать или назначать / bin / date для ydate.продолжает бросать ошибки.Я попробовал галочки, и это не сработало.

#!/usr/bin/expect
        ydate=$(date -d 'yesterday' "+%Y.%m.%d")
        file="casper_${ydate}.csv"
        spawn scp -o StrictHostKeyChecking=no -oport=666 $file casper@casper-server:/spooky/outgoing
        set pass "foofoofoo"
        expect {
        password: {send "$pass\r"; exp_continue}
                  }

Ответы [ 2 ]

0 голосов
/ 01 июня 2018

У Expect есть 2 способа получить дату без вызова внешней программы:

  1. Tcl's clock команда

    set ydate [clock format [clock seconds] -format "%Y.%m.%d"]
    
  2. Ожидается timestamp команда

    set ydate [timestamp -format "%Y.%m.%d"]
    
0 голосов
/ 31 мая 2018

Обновление: используйте ответ Гленна Джекмана (если вы не настраиваете аутентификацию с открытым ключом) вместо этого, чтобы избежать необходимости использовать exec.


.использовать синтаксис expect, а не оболочку, так как это не сценарий оболочки.

set ydate [exec date -d "yesterday" "+%Y.%m.%d"]
set file "casper_${ydate}.csv"
...