Define local variables.
Create a local variable called NAME, and give it VALUE. OPTION can
be any option accepted by `declare'.
Local variables can only be used within a function; they are visible
only to the function where they are defined and its children.
Exit Status:
Returns success unless an invalid option is supplied, a variable
assignment error occurs, or the shell is not executing a function.
4条答案
按热度按时间vaqhlq811#
它似乎如你所愿。
字符串
这将打印:
型
vuktfyat2#
可以定义!
只要定义了
local
,函数中的值设置就不会影响全局IFS
值。看到下面的片段之间的区别了吗字符串
当在命令行中调用时,
型
做着
型
从命令行。上面
echo
输出中的hexdump
不会显示函数中定义的IFS
值型
请看我的一个答案,我是如何使用本地化的
IFS
来做算术的-How can I add numbers in a bash scriptx8goxv8g3#
我感到困惑,因为我在函数内部将IFS的值更改为
:
(没有使用local
),然后在调用函数后尝试使用此命令显示IFS的值:字符串
它显示了一个空行,让我觉得函数没有改变IFS。在发布了这个问题之后,我意识到单词分裂在起作用,我应该使用
型
或者是
型
或者更好
型
以准确显示IFS值。
回到局部变量的主题,是的,任何变量都可以在函数内声明为
local
以限制范围,除了已声明为只读的变量(使用readonly
或declare -r
内置命令)。这包括Bash internal变量,如BASH_VERSINFO
等。从
help local
:local:local [option] name[=value] ...
型
d4so4syb4#
您可以将
IFS
指定为local
变量;本地版本仍然用作字段分隔符字符串。有时在完全隔离的环境中运行函数是很有用的,在这种环境中没有永久性的更改。(例如,如果函数需要更改shell选项。)这可以通过使函数在子shell中运行来实现;只需将函数定义中的
{}
更改为()
:字符串