LINUX.ORG.RU

Bash неправильно обрабатывает фигурные скобки

 ,


0

1

Подскажите пожалуйста, как я понимаю в данном скрипте bash должен обработать фигурные скобки как последовательность чисел 1, 2 и 3, а он воспринимает со скобками как единое целое. Почему так происходит? Может что не так делаю?

$ for var in {1..3}
> do
> echo "number $var"
> done
number {1..3}
$ uname -a
Linux vm-5a0a62 5.15.0-107-generic #117-Ubuntu SMP Fri Apr 26 12:26:49 UTC 2024 x86_64
 x86_64 x86_64 GNU/Linux
$ bash --version
GNU bash, version 5.1.16(1)-release (x86_64-pc-linux-gnu)
Copyright (C) 2020 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software; you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
$

Ответ на: комментарий от anonymous

Странно, как вы написали, сработало. Показал 1 2 3. Но почему в цикле на получается. Дома на компе стоит ubuntu с такой же версией bash и там все работает. А это с виртуалки cloud.ru. Там ответили что до виртуалки у них доступа нет, решайте сами. Спасибо за такой вариант!

serg77
() автор топика
Ответ на: комментарий от serg77

Ставь шел по дефолту bash или пиши без «башизмов».

Если фигачишь скрипты, можешь явно указать нужный шелл первой строкой: #!/bin/bash. Но лучше баш в скриптах не юзать)

PRN
()
Последнее исправление: PRN (всего исправлений: 3)
Ответ на: комментарий от serg77

У тебя не баш, вот и не работает. Запусти просто bash, а потом в нём свой код. Работает? Ну вот. А у тебя какой-нибудь dash или ещё что-то.

И если пишешь скрипты, лучше пиши на POSIX shell, без башевских дополнений.

for var in $(seq 1 3)
do
    echo "number $var"
done

Ну и можешь шеллом для пользователя поставить bash. А лучше zsh. man chsh

CrX ★★★★★
()
Последнее исправление: CrX (всего исправлений: 1)