Как в bash-е удалить концевые пробелы?
Желательно не прибегая к вызову внешних программ и без использования циклов поиска непробела с конца строки (это тривиально, но медленно)
Сейчас я применяю такую конструкцию:
A="Чему-то там "
A="${A//[ ][ ]}"
A="${A//%[ ]}"
Но эта штука удалит и двойной пробел внутри строки, а это совсем нехорошо, пусть уж лучше она его двойным и оставит, если не может на одинарный поменять.
A=${A//%+( )/}А зачем такие извраты именно в bash?
>A=${A//%+( )/}
Не удаляет ничего %-(>А зачем такие извраты именно в bash?
Чтобы не завязываться на другие программы. К тому-же если bash-а будет достаточно, зачем применять что-то более навороченное и тяжёлое?
> Не удаляет ничего %-(Какая версия bash? Что говорит 'shopt extglob'?
Можно извернуться и так:
A=($A); A=${A[*]};
но лучше все это на perl :)
>> Не удаляет ничего %-(
>
>Какая версия bash? Что говорит 'shopt extglob'?
GNU bash, version 2.05.0(1)-release (i386-slackware-linux-gnu)
Copyright 2000 Free Software Foundation, Inc.extglob off
>
>Можно извернуться и так:
>
>A=($A); A=${A[*]};
>
>но лучше все это на perl :)
Не хочу почему-то ;)
> extglob offНу так 'shopt -s extglob'
> >но лучше все это на perl :)
> Не хочу почему-то ;)
Зря :)
>> extglob off
>
>Ну так 'shopt -s extglob'
Да, я уже сообразил ;)Спасибо, всё нормально.