( ... ) 是此代码中的子外壳还是其他?
Is ( ... ) a subshell in this code or something else?
在我的这个 POSIX shell 函数中:
disable_mouse_for_a_second()
{
if xinput --disable "" 2> /dev/null
then
(
sleep 1s
xinput --enable ""
) &
return 0
else
return 1
fi
}
(
... )
是此代码中的子shell 还是其他?
您问题的简短回答是是。问题块的原因无非是单行:
( sleep 1s; xinput --enable ""; ) &
分布在多行。它只是执行(和后台)sleep
和 xinput
命令。
您将看到的两个主要的复合命令 写在多行上:
(list) ## and
{ list; }
两者的区别是(list)
是在subshell环境中执行的,变量赋值和影响[=34=的内置命令]的环境在命令完成后不再有效。
{ list; }
列表只是在当前shell环境.
中执行
在我的这个 POSIX shell 函数中:
disable_mouse_for_a_second()
{
if xinput --disable "" 2> /dev/null
then
(
sleep 1s
xinput --enable ""
) &
return 0
else
return 1
fi
}
(
... )
是此代码中的子shell 还是其他?
您问题的简短回答是是。问题块的原因无非是单行:
( sleep 1s; xinput --enable ""; ) &
分布在多行。它只是执行(和后台)sleep
和 xinput
命令。
您将看到的两个主要的复合命令 写在多行上:
(list) ## and
{ list; }
两者的区别是(list)
是在subshell环境中执行的,变量赋值和影响[=34=的内置命令]的环境在命令完成后不再有效。
{ list; }
列表只是在当前shell环境.