Значение глобальной переменной не изменяется в BASH - PullRequest
1 голос
/ 30 июля 2009

Я работаю над BASH-скриптом, который имеет глобальную переменную. Значение переменной изменяется в функции / подпрограмме. Но значение не меняется, когда я пытаюсь распечатать эту переменную вне функции. Пример кода выглядит следующим образом:

#!/bin/bash

count=

linux_f()
    {
        let count=100
    }

linux_f

echo $count

Оператор echo печатает пусто, а не 100 Почему значение глобальной переменной не передается в функцию и выходит.

Ответы [ 3 ]

2 голосов
/ 30 июля 2009

Ваш код работает для меня, печатая 100. Это код, который я использовал:

count=

linux_f()
    {
        let count=100
    }

linux_f

echo $count

Редактировать: Я пробовал это с версией 2 bash на MSYS и версией 3 на Fedora Linux, и она работает на обоих. Вы действительно уверены, что выполняете этот скрипт? Попробуйте добавить эхо "это все", чтобы убедиться, что что-то отображается. Кроме этого, я в растерянности.

1 голос
/ 30 июля 2009

Возможно, потому что вы присваиваете countl, а не count?

0 голосов
/ 30 июля 2009

В назначении переменной есть орфографическая ошибка (внутри функции). После исправления это будет работать:

[dsm@localhost:~]$ var=3
[dsm@localhost:~]$ echo $var
3
[dsm@localhost:~]$ function xxx(){ let var=4 ; }
[dsm@localhost:~]$ xxx
[dsm@localhost:~]$ echo $var
4
[dsm@localhost:~]$ 

И запустить как скрипт:

[dsm@localhost:~]$ cat test.sh 
#!/bin/bash

var=
echo "var is '$var'"
function xxx(){ let var=4 ; }
xxx
echo "var is now '$var'"
[dsm@localhost:~]$ ./test.sh #/ <-- #this is to stop the highlighter thinking we have a regexp
var is ''
var is now '4'
[dsm@localhost:~]$ 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...