Здесь представлены 2 разные версии программы:
это
Программа:
#!/usr/bin/ksh
printmsg() {
i=1
print "hello function :)";
}
i=0;
echo I printed `printmsg`;
printmsg
echo $i
Выход:
# ksh e
I printed hello function :)
hello function :)
1
и
Программа:
#!/usr/bin/ksh
printmsg() {
i=1
print "hello function :)";
}
i=0;
echo I printed `printmsg`;
echo $i
Выход:
# ksh e
I printed hello function :)
0
Единственная разница между вышеупомянутыми 2 программами состоит в том, что printmsg
2 раза в вышеуказанной программе, тогда как printmsg
вызывается один раз в следующей программе.
У меня возникает сомнение здесь: Цитировать
Имейте в виду: функции действуют почти так же, как внешние сценарии ... за исключением
что по умолчанию все переменные делятся между одним и тем же ksh
процесс! Если вы измените имя переменной внутри функции .... это
значение переменной все равно будет изменено после того, как вы покинете
функция !!
Но мы можем ясно увидеть в выходных данных 2-й программы, что значение i
остается неизменным. Но мы уверены, что функция вызывается, поскольку оператор print получает выходные данные функции и печатает ее. Так почему же выходные данные различны?