Я пишу скрипт и у меня возникла проблема при попытке получить дату из таблицы. У меня проблемы с сохранением в переменную. Я всегда получаю сообщение об ошибке: Плохо размещенные ().
Переменная TIMEFRAME имеет значение «D», и оболочка фактически попадает в IF, также пароль не является проблемой, так как я использую его для подключения вручную и проверьте запрос (здесь нет проблем).
Это часть скрипта, где у меня возникают проблемы.
#!/bin/csh -f
if ( $TIMEFRAME == "D" ) then
set TIMEBEG = `sqlplus -s $PASSWORD << EOF \
set head off; \
set feed off; \
select to_char(trunc(sysdate) - 1,'YYYYMMDD') from dual; \
exit; \
EOF`
set TIMEEND = $TIMEBEG"235959"
set TIMEBEG = $TIMEBEG"000000"
endif
Я также пытался сохранить его в файле, то же самое задача
#!/bin/csh -f
set tmp_file=/tmp/tmp.$$
if ( $TIMEFRAME == "D" ) then
sqlplus -s $PASSWORD > $tmp_file << EOF \
set head off \
set feed off \
select to_char(trunc(sysdate) - 1,'YYYYMMDD') from dual; \
exit; \
EOF
set TIMEBEG=`cat $tmp_file`
set TIMEEND = $TIMEBEG"235959"
set TIMEBEG = $TIMEBEG"000000"
endif
Я пробовал разные решения, но с той же проблемой, пытался без точки с запятой, без SET, чтобы поставить его в одну строку, я вне идей.
Когда я пытаюсь использовать -xvf, я получаю следующее:
if ( $TIMEFRAME == "D" ) then
if ( D == D ) then
sqlplus -s $PASSWORD > $tmp_file << EOF set head off set feed off select to_char ( trunc ( sysdate ) - 1,'YYYYMMDD' ) from dual ; exit ; EOF
Badly placed ()'s.
Есть идеи? Это работает на Amazon Linux