为什么shell函数在小括号里使用return会无效?

shell复制粘贴执行以下

function fff(){
(return)
echo 1
}
fff

结果输出1
请教之

阅读 3.2k
1 个回答

在shell中单括号一共有三层意思:
①命令组。括号中的命令将会新开一个子shell顺序执行,所以括号中的变量不能够被脚本余下的部分使用。括号中多个命令之间用分号隔开,最后一个命令可以没有分号,各命令和括号之间不必有空格。
②命令替换。等同于`cmd`,shell扫描一遍命令行,发现了$(cmd)结构,便将$(cmd)中的cmd执行一次,得到其标准输出,再将此输出放到原来命令。有些shell不支持,如tcsh。
③用于初始化数组。如:array=(a b c d)

此处为第一层意思。所以返回只是子shell,而不会影响到当前shell的执行,

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进