Страница 1 из 1

что за херь в баше

Добавлено: 2015-01-01 3:55:56
Alex Keda
от такой скрипт и такие странные результаты выполнения...

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

sh -xv  /tmp/a.sh



        if [ `uname` = "Linux" ]
        then
                params='--date="1 hour ago"'
        else
                params="-v-1H"
        fi
uname
++ uname
+ '[' Linux = Linux ']'
+ params='--date="1 hour ago"'

       echo `date $params +%Y%m%d%H%M%S` 
date $params +%Y%m%d%H%M%S
++ date '--date="1' hour 'ago"' +%Y%m%d%H%M%S
date: extra operand `ago"'
Try `date --help' for more information.
+ echo
непонятно, откуда взялось вот это
"1' hour 'ago"'

Re: что за херь в баше

Добавлено: 2015-01-02 5:05:56
FiL
И правда херь.
То есть вылечить-то легко -

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

if [ `uname` = "Linux" ]
        then
                params=--date="1 hour ago"
        else
                params="-v-1H"
        fi
date "$params" +%Y%m%d%H%M%S
Но это не отвечает на вопрос откуда взялась хрень.

Re: что за херь в баше

Добавлено: 2015-01-02 6:47:53
f_andrey
Забавно, там похоже какие то грабли, от шибко умного разбирания аргументов, более красиво наверное так, чтоб чего лишнего не зацепило

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

params=('--date="1 hour ago"')
echo $params
либо

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

params='--date="1 hour ago"'
echo "$params"
А для интереса надо копать что то типа tldp.org/LDP/abs/html/varsubn.html

Re: что за херь в баше

Добавлено: 2015-01-02 6:53:09
f_andrey
Кстати, православный шелл ведёт себя точно так же ;) :p

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

% sh -xv test.bash.sh
params='--date="1 hour ago"'
+ params='--date="1 hour ago"'
echo $params
+ echo '--date="1' hour 'ago"'
--date="1 hour ago"
:~ % whereis sh
sh: /bin/sh /usr/share/man/man1/sh.1.gz

Re: что за херь в баше

Добавлено: 2015-01-02 15:03:24
Alex Keda
за лечение спасибо.
не от меня, от людей юзающих линукс.
у меня, к счастью, это на фре =))