Я работаю с этим:
GNU bash, version 4.1.2(1)-release (x86_64-redhat-linux-gnu)
У меня есть script, как показано ниже:
#!/bin/bash
e=2
function test1() {
e=4
echo "hello"
}
test1
echo "$e"
Что возвращает:
hello
4
Но если я назначу результат функции переменной, глобальная переменная e
не будет изменена:
#!/bin/bash
e=2
function test1() {
e=4
echo "hello"
}
ret=$(test1)
echo "$ret"
echo "$e"
Возврат:
hello
2
Я слышал о использовании eval в этом случае, поэтому я сделал это в test1
:
eval 'e=4'
Но тот же результат.
Не могли бы вы объяснить мне, почему он не изменен? Как сохранить эхо функции test1
в ret
и изменить глобальную переменную тоже?