bash script

На самом деле это единственный раздел про unix на этом форуме

Модераторы: /dev/random, Модераторы разделов

crossly
Сообщения: 47
ОС: mandriva 2007

bash script

Сообщение crossly »

добрый всем день.... подскажите плиз почему не работает этот код...

Код: Выделить всё

export TYPE
export DUMPPATH
for DATABASE in $DATABASES; do

    DUMPNAME=$DATABASE_$TYPE_`date '+%H%M%S'`.dmp
    export DUMPNAME
    export DATABASE
    RESULT=`isql -U$USERNAME -P$PASSWORD -S$SERVER | grep "DUMP is complete" << :end
    dump ${TYPE} ${DATABASE} to '${DUMPPATH}/$DUMPNAME'
    go
    :end`
#    echo $RESULT
    if [ -n "$RESULT" ];  then
        echo "DUMP $DATABASE Ok..."
    else
        echo "Error dumping database $DATABASE ..."
    fi
done


ежели убрать цикл for то все ок....
иначе ошибка....

Код: Выделить всё

syntax error: unexpected end of file
Спасибо сказали:
Аватара пользователя
diesel
Бывший модератор
Сообщения: 5989
ОС: OS X, openSuSE, ROSA, Debian
Контактная информация:

Re: bash script

Сообщение diesel »

RESULT=`isql -U$USERNAME -P$PASSWORD -S$SERVER | grep "DUMP is complete" << :end

выделенная кавычка не закрыта (открой файл в редакторе который подсветку bash-синтаксиса поддерживает, помогает)
Спасибо сказали:
crossly
Сообщения: 47
ОС: mandriva 2007

Re: bash script

Сообщение crossly »

diesel писал(а):
16.10.2008 11:05
RESULT=`isql -U$USERNAME -P$PASSWORD -S$SERVER | grep "DUMP is complete" << :end

выделенная кавычка не закрыта (открой файл в редакторе который подсветку bash-синтаксиса поддерживает, помогает)

закрыта уже .... эффект тот же....
Спасибо сказали:
Аватара пользователя
diesel
Бывший модератор
Сообщения: 5989
ОС: OS X, openSuSE, ROSA, Debian
Контактная информация:

Re: bash script

Сообщение diesel »

crossly писал(а):
16.10.2008 11:16
diesel писал(а):
16.10.2008 11:05
RESULT=`isql -U$USERNAME -P$PASSWORD -S$SERVER | grep "DUMP is complete" << :end

выделенная кавычка не закрыта (открой файл в редакторе который подсветку bash-синтаксиса поддерживает, помогает)

закрыта уже .... эффект тот же....

неправда:

Код: Выделить всё

diesel@indie:~$ DATABASES="1 2 3" bash 0.sh
Error dumping database 1 ...
Error dumping database 2 ...
Error dumping database 3 ...
diesel@indie:~$ cat 0.sh
#!/bin/bash
export TYPE
export DUMPPATH
for DATABASE in $DATABASES; do

    DUMPNAME=$DATABASE_$TYPE_`date '+%H%M%S'`.dmp
    export DUMPNAME
    export DATABASE
    RESULT=`echo isql -U$USERNAME -P$PASSWORD -S$SERVER | grep "DUMP is complete" << :end
    dump ${TYPE} ${DATABASE} to '${DUMPPATH}/$DUMPNAME'
    go
    :end`
#    echo $RESULT
    if [ -n "$RESULT" ];  then
        echo "DUMP $DATABASE Ok..."
    else
        echo "Error dumping database $DATABASE ..."
    fi
done


А вот так было с тем что ты изначально показал:

Код: Выделить всё

diesel@indie:~$ DATABASES="1 2 3" bash 0.sh
0.sh: line 9: unexpected EOF while looking for matching ``'
0.sh: line 20: syntax error: unexpected end of file
Спасибо сказали:
korey4ik
Сообщения: 6

Re: bash script

Сообщение korey4ik »

попробуй так:
...
for DATABASE in "$DATABASES"; do
...

ещё, насколько я понимаю, имелось в виду:
...
DUMPNAME=${DATABASE}_${TYPE}_`date '+%H%M%S'`.dmp
...
или же лучше так:
DUMPNAME="$DATABASE"_"$TYPE"_`date '+%H%M%S'`.dmp

Вообще желательно переменные в скобки заключать. В таком случае, если даже они содержат пробелы, всё равно будут интерпритироваться как одно слово, а не несколько.

Update:
Чего-то я прогнал. Извиняюсь. Чего-то я прогнал. Извиняюсь. Не проснулся ещё.

Update:
Опять ступил. )))
Спасибо сказали:
crossly
Сообщения: 47
ОС: mandriva 2007

Re: bash script

Сообщение crossly »

korey4ik писал(а):
16.10.2008 11:26
попробуй так:
...
for DATABASE in "$DATABASES"; do
...

ещё, насколько я понимаю, имелось в виду:
...
DUMPNAME=${DATABASE}_${TYPE}_`date '+%H%M%S'`.dmp
...
или же лучше так:
DUMPNAME="$DATABASE"_"$TYPE"_`date '+%H%M%S'`.dmp

Вообще желательно переменные в скобки заключать. В таком случае, если даже они содержат пробелы, всё равно будут интерпритироваться как одно слово, а не несколько.

Чего-то я прогнал. Извиняюсь. Чего-то я прогнал. Извиняюсь. Не проснулся ещё.

ребятки.... код в цикле вполне рабочий.... я же и объясняю... если for убрать то все работает....
Спасибо сказали:
Аватара пользователя
diesel
Бывший модератор
Сообщения: 5989
ОС: OS X, openSuSE, ROSA, Debian
Контактная информация:

Re: bash script

Сообщение diesel »

korey4ik писал(а):
16.10.2008 11:26
попробуй так:
...
for DATABASE in "$DATABASES"; do

Вообще желательно переменные в скобки заключать. В таком случае, если даже они содержат пробелы, всё равно будут интерпритироваться как одно слово, а не несколько.

в изначальном for'е в DATABASE не могло быть пробелов, потому что собственно они разделителем и являются, в том который тут:

Код: Выделить всё

diesel@indie:~$ DATABASES="\"1 2\" 3" bash 0.sh
Error dumping database "1 2" 3 ...

вся переменная DATABASES попадет в DATABASE как одно целое - не уверен что это надо топикстартеру. если предусмотрены пробелы, то лучше разделителем считать перевод строки и использовать while


crossly писал(а):
16.10.2008 11:27
ребятки.... код в цикле вполне рабочий.... я же и объясняю... если for убрать то все работает....

можно вывод того как он не работает так как я выше показал - то есть пример того как ты запускаешь его, а потом cat того что ты запускаешь?
Спасибо сказали:
crossly
Сообщения: 47
ОС: mandriva 2007

Re: bash script

Сообщение crossly »

diesel писал(а):
16.10.2008 11:30
korey4ik писал(а):
16.10.2008 11:26
попробуй так:
...
for DATABASE in "$DATABASES"; do

Вообще желательно переменные в скобки заключать. В таком случае, если даже они содержат пробелы, всё равно будут интерпритироваться как одно слово, а не несколько.

в изначальном for'е в DATABASE не могло быть пробелов, потому что собственно они разделителем и являются, в том который тут:

Код: Выделить всё

diesel@indie:~$ DATABASES="\"1 2\" 3" bash 0.sh
Error dumping database "1 2" 3 ...

вся переменная DATABASES попадет в DATABASE как одно целое - не уверен что это надо топикстартеру. если предусмотрены пробелы, то лучше разделителем считать перевод строки и использовать while


crossly писал(а):
16.10.2008 11:27
ребятки.... код в цикле вполне рабочий.... я же и объясняю... если for убрать то все работает....

можно вывод того как он не работает так как я выше показал - то есть пример того как ты запускаешь его, а потом cat того что ты запускаешь?

в общем ещё замечание.... в RESULT пусто... если убрать RESULT=`...` то ошибка....
и ещё что касается пробелов то они в переменных отсутствуют.... в DATABASES только db1....
Спасибо сказали:
Аватара пользователя
diesel
Бывший модератор
Сообщения: 5989
ОС: OS X, openSuSE, ROSA, Debian
Контактная информация:

Re: bash script

Сообщение diesel »

убрал, ошибки не вижу, покажи все-таки как и что ты запускаешь

Код: Выделить всё

diesel@debian:~$ DATABASES="db1" sh 0.sh
Error dumping database db1 ...
diesel@debian:~$ cat 0.sh
#!/bin/sh
export TYPE
export DUMPPATH
for DATABASE in $DATABASES; do

    DUMPNAME=$DATABASE_$TYPE_`date '+%H%M%S'`.dmp
    export DUMPNAME
    export DATABASE
  #  RESULT=`echo isql -U$USERNAME -P$PASSWORD -S$SERVER | grep "DUMP is complete" << :end
  #  dump ${TYPE} ${DATABASE} to '${DUMPPATH}/$DUMPNAME'
  #  go
  #  :end`
#    echo $RESULT
    if [ -n "$RESULT" ];  then
        echo "DUMP $DATABASE Ok..."
    else
        echo "Error dumping database $DATABASE ..."
    fi
done
diesel@debian:~$
Спасибо сказали:
crossly
Сообщения: 47
ОС: mandriva 2007

Re: bash script

Сообщение crossly »

ты убрал то что вызывает ошибку.... :).... если убрать то и у меня никаких ошибок... если закоментированный код поместить не в цикле.... то все работает(вот только это будет только для одной БД)... когда сую в цикл или скажем в отдельную функцию получаю ошибку...
Спасибо сказали:
Аватара пользователя
diesel
Бывший модератор
Сообщения: 5989
ОС: OS X, openSuSE, ROSA, Debian
Контактная информация:

Re: bash script

Сообщение diesel »

crossly писал(а):
16.10.2008 12:05
ты убрал то что вызывает ошибку.... :).... если убрать то и у меня никаких ошибок... если закоментированный код поместить не в цикле.... то все работает(вот только это будет только для одной БД)... когда сую в цикл или скажем в отдельную функцию получаю ошибку...

ок уже понятней.

хорошо, а если это переделать в что-то типа:

Код: Выделить всё

RESULT=` echo "dump ${TYPE} ${DATABASE} to '${DUMPPATH}/$DUMPNAME'
go" | isql -U$USERNAME -P$PASSWORD -S$SERVER | grep "DUMP is complete"`

(если go тут вообще надо)
я так понимаю isql с STDIN эти команды должна брать? а не находит оно конец файла тот который между :end у тебя?
Спасибо сказали:
crossly
Сообщения: 47
ОС: mandriva 2007

Re: bash script

Сообщение crossly »

diesel писал(а):
16.10.2008 12:13
crossly писал(а):
16.10.2008 12:05
ты убрал то что вызывает ошибку.... :).... если убрать то и у меня никаких ошибок... если закоментированный код поместить не в цикле.... то все работает(вот только это будет только для одной БД)... когда сую в цикл или скажем в отдельную функцию получаю ошибку...

ок уже понятней.

хорошо, а если это переделать в что-то типа:

Код: Выделить всё

RESULT=` echo "dump ${TYPE} ${DATABASE} to '${DUMPPATH}/$DUMPNAME'
go" | isql -U$USERNAME -P$PASSWORD -S$SERVER | grep "DUMP is complete"`

(если go тут вообще надо)
я так понимаю isql с STDIN эти команды должна брать? а не находит оно конец файла тот который между :end у тебя?

go должно идти отдельной строкой.... иначе dump не отработает вообще...
я просто не могу понять ... почему если вынести это за цикл то все работает.... :(
Спасибо сказали:
Аватара пользователя
diesel
Бывший модератор
Сообщения: 5989
ОС: OS X, openSuSE, ROSA, Debian
Контактная информация:

Re: bash script

Сообщение diesel »

crossly писал(а):
16.10.2008 12:22
go должно идти отдельной строкой.... иначе dump не отработает вообще...
я просто не могу понять ... почему если вынести это за цикл то все работает.... :(

попробуй так как я сказал, вообще не могу понять как оно у тебя работает, конструкция по идее должна делать примерно тоже что допустим:

Код: Выделить всё

RESULT=`cat |grep test <<:end
    dump ${TYPE} ${DATABASE} to '${DUMPPATH}/$DUMPNAME'
    go
:end`


так вот это и с циклом и без цикла не работае - потому что все фактически передается в grep, а не в cat .... а cat виснит и ждет ввода.
вот так работает

Код: Выделить всё

    RESULT=`cat <<:end |grep test
    dump ${TYPE} ${DATABASE} to '${DUMPPATH}/$DUMPNAME'
    go
:end `

и с циклом и без цикла, только все-равно какой-то стремный вариант...
Спасибо сказали:
crossly
Сообщения: 47
ОС: mandriva 2007

Re: bash script

Сообщение crossly »

diesel писал(а):
16.10.2008 12:43
crossly писал(а):
16.10.2008 12:22
go должно идти отдельной строкой.... иначе dump не отработает вообще...
я просто не могу понять ... почему если вынести это за цикл то все работает.... :(

попробуй так как я сказал, вообще не могу понять как оно у тебя работает, конструкция по идее должна делать примерно тоже что допустим:

Код: Выделить всё

RESULT=`cat |grep test <<:end
    dump ${TYPE} ${DATABASE} to '${DUMPPATH}/$DUMPNAME'
    go
:end`


так вот это и с циклом и без цикла не работае - потому что все фактически передается в grep, а не в cat .... а cat виснит и ждет ввода.
вот так работает

Код: Выделить всё

    RESULT=`cat <<:end |grep test
    dump ${TYPE} ${DATABASE} to '${DUMPPATH}/$DUMPNAME'
    go
:end `

и с циклом и без цикла, только все-равно какой-то стремный вариант...

убрал grep .... результат тот же...
Спасибо сказали:
Аватара пользователя
diesel
Бывший модератор
Сообщения: 5989
ОС: OS X, openSuSE, ROSA, Debian
Контактная информация:

Re: bash script

Сообщение diesel »

crossly писал(а):
16.10.2008 12:55
убрал grep .... результат тот же...

а ...

Код: Выделить всё

RESULT=` echo "dump ${TYPE} ${DATABASE} to '${DUMPPATH}/$DUMPNAME'
go" | isql -U$USERNAME -P$PASSWORD -S$SERVER | grep "DUMP is complete"`


ЗЫ: я надеюсь речь идет о Linux и bash?
Спасибо сказали:
crossly
Сообщения: 47
ОС: mandriva 2007

Re: bash script

Сообщение crossly »

diesel писал(а):
16.10.2008 14:20
ЗЫ: я надеюсь речь идет о Linux и bash?

угу.... таким макаром не поёдет.... команда go должна идти с новой строки... иначе интерпретатор её не воспримет.... и естественно никакого дампирования не будет...
проще говоря ... если это выполнять в консоли, то должно выглядеть примерно так..

Код: Выделить всё

~/scripts> isql -Uuser -SServer
Password:
1> dump database DB to '/path/db.dmp'
2> go
Backup Server session id is:  106.  Use this value when executing the
'sp_volchanged' system stored procedure after fulfilling any volume change
request from the Backup Server.
Backup Server: 4.41.1.1: Creating new disk file /path/db.dmp.
Backup Server: 6.28.1.1: Dumpfile name 'DB82900BFF0    ' section number 1
mounted on disk file '/path/db.dmp'
Backup Server: 4.58.1.1: Database DB: 25660 kilobytes DUMPed.
Backup Server: 4.58.1.1: Database DB: 44650 kilobytes DUMPed.
....
Backup Server: 3.43.1.1: Dump phase number 1 completed.
Backup Server: 3.43.1.1: Dump phase number 2 completed.
Backup Server: 3.43.1.1: Dump phase number 3 completed.
Backup Server: 4.58.1.1: Database DB: 2192284 kilobytes DUMPed.
Backup Server: 3.42.1.1: DUMP is complete (database DB).
1>
Спасибо сказали:
Аватара пользователя
diesel
Бывший модератор
Сообщения: 5989
ОС: OS X, openSuSE, ROSA, Debian
Контактная информация:

Re: bash script

Сообщение diesel »

crossly писал(а):
16.10.2008 14:36
diesel писал(а):
16.10.2008 14:20
ЗЫ: я надеюсь речь идет о Linux и bash?

угу.... таким макаром не поёдет.... команда go должна идти с новой строки... иначе интерпретатор её не воспримет.... и естественно никакого дампирования не будет...
проще говоря ... если это выполнять в консоли, то должно выглядеть примерно так..

она пойдет ровно так же(там ведь не две строчки не зря):

diesel@indie:~$ echo "line 1
> line 2
> line 3" |cat
line 1
line 2
line 3
diesel@indie:~$
Спасибо сказали:
crossly
Сообщения: 47
ОС: mandriva 2007

Re: bash script

Сообщение crossly »

diesel писал(а):
16.10.2008 14:47
crossly писал(а):
16.10.2008 14:36
diesel писал(а):
16.10.2008 14:20
ЗЫ: я надеюсь речь идет о Linux и bash?

угу.... таким макаром не поёдет.... команда go должна идти с новой строки... иначе интерпретатор её не воспримет.... и естественно никакого дампирования не будет...
проще говоря ... если это выполнять в консоли, то должно выглядеть примерно так..

она пойдет ровно так же(там ведь не две строчки не зря):

diesel@indie:~$ echo "line 1
> line 2
> line 3" |cat
line 1
line 2
line 3
diesel@indie:~$

не хочет.... прикол в том что если запускать из консоли то проходит и твой вариант и мой... почему из скрипта не хочет... :wacko:
Спасибо сказали:
Аватара пользователя
diesel
Бывший модератор
Сообщения: 5989
ОС: OS X, openSuSE, ROSA, Debian
Контактная информация:

Re: bash script

Сообщение diesel »

crossly писал(а):
16.10.2008 14:57
diesel писал(а):
16.10.2008 14:47
crossly писал(а):
16.10.2008 14:36
diesel писал(а):
16.10.2008 14:20
ЗЫ: я надеюсь речь идет о Linux и bash?

угу.... таким макаром не поёдет.... команда go должна идти с новой строки... иначе интерпретатор её не воспримет.... и естественно никакого дампирования не будет...
проще говоря ... если это выполнять в консоли, то должно выглядеть примерно так..

она пойдет ровно так же(там ведь не две строчки не зря):

diesel@indie:~$ echo "line 1
> line 2
> line 3" |cat
line 1
line 2
line 3
diesel@indie:~$

не хочет.... прикол в том что если запускать из консоли то проходит и твой вариант и мой... почему из скрипта не хочет... :wacko:


не хочет - сам сервер бэкапить, или ....?
может быть там еще ньюлайн нужен:

RESULT=` echo "dump ${TYPE} ${DATABASE} to '${DUMPPATH}/$DUMPNAME'
go
" | isql -U$USERNAME -P$PASSWORD -S$SERVER | grep "DUMP is complete"`
Спасибо сказали:
crossly
Сообщения: 47
ОС: mandriva 2007

Re: bash script

Сообщение crossly »

diesel писал(а):
16.10.2008 15:13
crossly писал(а):
16.10.2008 14:57
diesel писал(а):
16.10.2008 14:47
crossly писал(а):
16.10.2008 14:36
diesel писал(а):
16.10.2008 14:20
ЗЫ: я надеюсь речь идет о Linux и bash?

угу.... таким макаром не поёдет.... команда go должна идти с новой строки... иначе интерпретатор её не воспримет.... и естественно никакого дампирования не будет...
проще говоря ... если это выполнять в консоли, то должно выглядеть примерно так..

она пойдет ровно так же(там ведь не две строчки не зря):

diesel@indie:~$ echo "line 1
> line 2
> line 3" |cat
line 1
line 2
line 3
diesel@indie:~$

не хочет.... прикол в том что если запускать из консоли то проходит и твой вариант и мой... почему из скрипта не хочет... :wacko:


не хочет - сам сервер бэкапить, или ....?
может быть там еще ньюлайн нужен:

RESULT=` echo "dump ${TYPE} ${DATABASE} to '${DUMPPATH}/$DUMPNAME'
go
" | isql -U$USERNAME -P$PASSWORD -S$SERVER | grep "DUMP is complete"`

в RESULT пусто ... причём с grep и без него... т.е. команда просто не выполняется...
Спасибо сказали:
Аватара пользователя
diesel
Бывший модератор
Сообщения: 5989
ОС: OS X, openSuSE, ROSA, Debian
Контактная информация:

Re: bash script

Сообщение diesel »

crossly писал(а):
16.10.2008 15:19

RESULT=` echo "dump ${TYPE} ${DATABASE} to '${DUMPPATH}/$DUMPNAME'
go
" | isql -U$USERNAME -P$PASSWORD -S$SERVER | grep "DUMP is complete"`

в RESULT пусто ... причём с grep и без него... т.е. команда просто не выполняется...

а если в терминале запустить:

echo "dump ${TYPE} ${DATABASE} to '${DUMPPATH}/$DUMPNAME'
go
" | isql -U$USERNAME -P$PASSWORD -S$SERVER | grep "DUMP is complete"

выполняется?

вообще результатом команды должен быть файл, насколько я понимаю. а не вывод, которого может и не быть.
Спасибо сказали:
Аватара пользователя
t.t
Бывший модератор
Сообщения: 7390
Статус: думающий о вечном
ОС: Debian, LMDE

Re: bash script

Сообщение t.t »

crossly писал(а):
16.10.2008 15:19
diesel писал(а):
16.10.2008 15:13
может быть там еще ньюлайн нужен:

RESULT=` echo "dump ${TYPE} ${DATABASE} to '${DUMPPATH}/$DUMPNAME'
go
" | isql -U$USERNAME -P$PASSWORD -S$SERVER | grep "DUMP is complete"`
в RESULT пусто ... причём с grep и без него... т.е. команда просто не выполняется...
На всякий случай избавьтесь от deprecated синтаксиса `...`, от этого тоже непредсказуемое поведение может быть. Вместо `...` рекомендуется использовать $(...).
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Спасибо сказали:
crossly
Сообщения: 47
ОС: mandriva 2007

Re: bash script

Сообщение crossly »

diesel писал(а):
16.10.2008 15:55
crossly писал(а):
16.10.2008 15:19

RESULT=` echo "dump ${TYPE} ${DATABASE} to '${DUMPPATH}/$DUMPNAME'
go
" | isql -U$USERNAME -P$PASSWORD -S$SERVER | grep "DUMP is complete"`

в RESULT пусто ... причём с grep и без него... т.е. команда просто не выполняется...

а если в терминале запустить:

echo "dump ${TYPE} ${DATABASE} to '${DUMPPATH}/$DUMPNAME'
go
" | isql -U$USERNAME -P$PASSWORD -S$SERVER | grep "DUMP is complete"

выполняется?

вообще результатом команды должен быть файл, насколько я понимаю. а не вывод, которого может и не быть.
]
таксс.... а теперь растолкуйте не сведущему.... почему если команду записать с начала строки то все гуд.... а если вставить таб не работает.... :)
Спасибо сказали:
Аватара пользователя
diesel
Бывший модератор
Сообщения: 5989
ОС: OS X, openSuSE, ROSA, Debian
Контактная информация:

Re: bash script

Сообщение diesel »

crossly писал(а):
16.10.2008 16:46
таксс.... а теперь растолкуйте не сведущему.... почему если команду записать с начала строки то все гуд.... а если вставить таб не работает.... :)

таб где. рядом с go? - тогда это вопрос к серверу..... оно передается ровно так как ты пишешь, то есть:

echo "bla-bla
<Tab>bla-bla"

именно так и перейдет в isql.
Спасибо сказали:
crossly
Сообщения: 47
ОС: mandriva 2007

Re: bash script

Сообщение crossly »

diesel писал(а):
16.10.2008 15:55
crossly писал(а):
16.10.2008 15:19

RESULT=` echo "dump ${TYPE} ${DATABASE} to '${DUMPPATH}/$DUMPNAME'
go
" | isql -U$USERNAME -P$PASSWORD -S$SERVER | grep "DUMP is complete"`

в RESULT пусто ... причём с grep и без него... т.е. команда просто не выполняется...

а если в терминале запустить:

echo "dump ${TYPE} ${DATABASE} to '${DUMPPATH}/$DUMPNAME'
go
" | isql -U$USERNAME -P$PASSWORD -S$SERVER | grep "DUMP is complete"

выполняется?

вообще результатом команды должен быть файл, насколько я понимаю. а не вывод, которого может и не быть.
]
таксс.... а теперь растолкуйте не сведущему.... почему если команду записать с начала строки то все гуд.... а если вставить таб не работает.... :)
Спасибо сказали:
Аватара пользователя
t.t
Бывший модератор
Сообщения: 7390
Статус: думающий о вечном
ОС: Debian, LMDE

Re: bash script

Сообщение t.t »

crossly писал(а):
16.10.2008 17:03
таксс.... а теперь растолкуйте не сведущему.... почему если команду записать с начала строки то все гуд.... а если вставить таб не работает.... :)
А это уже вопрос к isql, е на к bash (;
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Спасибо сказали:
Аватара пользователя
Folderx
Сообщения: 296
ОС: fedora, mandriva

Re: bash script

Сообщение Folderx »

Код: Выделить всё

#!/bin/bash

PATTERN="${1:-one}";

RESULT=`cat - << :end | grep "$PATTERN"
    one
    two
    three
one
two
three
:end`;

echo "$RESULT";

exit 0;


вывод

Код: Выделить всё

[guest@localhost tmp]$ scr.sh
    one
one
[guest@localhost tmp]$

[guest@localhost tmp]$ scr.sh two
    two
two
[guest@localhost tmp]$

скорее всего у тебя там :end не там стоит, или ты не учитываешь что табуляция тоже передаётся
Спасибо сказали:
crossly
Сообщения: 47
ОС: mandriva 2007

Re: bash script

Сообщение crossly »

дабы добить....

Код: Выделить всё

T=0
echo $TYPE
if [ "$TYPE"="tran" ]; then
    T=1
fi
echo $T

что здесь не правильно.... ?? каким бы не было TYPE, T всегда 1....
Спасибо сказали:
watashiwa_daredeska
Бывший модератор
Сообщения: 4038
Статус: Искусственный интеллект (pre-alpha)
ОС: Debian GNU/Linux

Re: bash script

Сообщение watashiwa_daredeska »

crossly писал(а):
20.10.2008 11:25
что здесь не правильно.... ?? каким бы не было TYPE, T всегда 1....

Код: Выделить всё

if [ "$TYPE" = "tran" ]; then
Спасибо сказали:
crossly
Сообщения: 47
ОС: mandriva 2007

Re: bash script

Сообщение crossly »

watashiwa_daredeska писал(а):
20.10.2008 11:39
crossly писал(а):
20.10.2008 11:25
что здесь не правильно.... ?? каким бы не было TYPE, T всегда 1....

Код: Выделить всё

if [ "$TYPE" = "tran" ]; then


да как я только не пробовал... :(

Код: Выделить всё

if $TYPE="tran";then
if "$TYPE"="tran";then
if [ $TYPE="tran" ];then
if [ "$TYPE"="tran" ];then

результат тот же....
Спасибо сказали:
Ответить