Я не могу использовать синтаксис bash 5 даже после настройки в MacOSX - PullRequest
1 голос
/ 24 апреля 2019

Я относительно новичок в bash.

У меня был bash 3 В моем mac по умолчанию.

GNU bash, version 3.2.57(1)-release (x86_64-apple-darwin18)
Copyright (C) 2007 Free Software Foundation, Inc.

Я считаю, что я установил и настроил bash 5 для MacOSX.Запуск bash -version выходных данных команды:

GNU bash, version 5.0.3(1)-release (x86_64-apple-darwin18.2.0)
Copyright (C) 2019 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.

Проблема в том, что я не могу выполнить ни одну из функций Bash 5, так как этот код использует функцию bash 4, не может вывести ожидаемое поведение:

for i in {1..100..2} ; do
    echo $i
done

выходы:

{1..100..2}

ожидаемый выход:

1
3
5
7
9
11
13
15
17
19
21
23
25
27
29
31
33
35
37
39
41
43
45
47
49
51
53
55
57
59
61
63
65
67
69
71
73
75
77
79
81
83
85
87
89
91
93
95
97
99

Ответы [ 3 ]

2 голосов
/ 24 апреля 2019

Команда bash -version (или bash --version) сообщает вам версию Bash, которую вы получите, если вы запустите bash.

Но я предполагаю, что вы не запускаете ее вручную bash;скорее вы просто открываете оболочку, которая, вероятно, все еще является более старой версией Bash.(Вполне возможно, и даже не так необычно, иметь две копии Bash, установленные в системе в разных местах.) Чтобы проверить это, вы можете запустить echo "$BASH_VERSION", чтобы увидеть версию Bash, в которую вы фактически печатаете.

Чтобы исправить это, вам необходимо настроить компьютер на использование более новой версии Bash в качестве оболочки.(Или вы можете просто запустить bash вручную.)

1 голос
/ 24 апреля 2019

homebrew устанавливает программы в /usr/local/bin, поэтому, если вы хотите использовать версию, установленную homebrew , вам нужно либо выполнить:

/usr/local/bin/bash --version

или убедиться, чточто /usr/local/bin происходит до /bin в вашем PATH, например

export PATH=/usr/local/bin:PATH
1 голос
/ 24 апреля 2019

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

#!/usr/local/bin/bash

(Отрегулируйте путь, необходимый для вашей установки.)

Если вы работаете в интерактивном режиме, убедитесь, что вы действительно используете ожидаемую версию bash, а не только то, что это первый «bash» в вашем пути поиска.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...