我正在读这个:
您可以使用命令
unset
varname 删除变量。通常这没有用,因为所有不存在的变量都假定为空,即等于空字符串“”。但是如果使用选项nounset
导致shell在遇到未定义的变量时指示错误,那么您可能对unset
感兴趣。
我的第一个问题是:我不明白为什么使用unset
无效;如果我想将变量放到null
我可以使用它(或设置 variable =“”或 variable = )。另一方面,如果我有一个不存在的变量,我不知道为什么我应该使用它..
我的第二个问题是:在这种情况下,为什么我会对unset
感兴趣?
答案 0 :(得分:1)
未设置变量和空变量之间存在相关差异
如果您无法预先知道将使用哪些变量,则可以处理local
的输出(示例:https://stackoverflow.com/a/43419722/3220113和https://stackoverflow.com/a/28104421/3220113)。
您可能有一个源自已获取只读配置文件的位置,但您不希望在您的环境中设置所有行。在这种情况下,您可能需要unset
您不需要的设置
当您编写一些使用某些变量的实用程序时,您不希望在环境中留下垃圾。使用Private Sub command6_Click()
DoCmd.GoToRecord, , acNewRec
End Sub
使用stat
变量旁边是另一种可能性。
答案 1 :(得分:0)
我想我找到了问题的答案。
1)如果您需要删除变量的定义和内容,可以使用unset
命令。但是,除非您打开nounset
设置选项,否则Korn Shell将允许使用不存在的变量,并且它会将此类变量的内容默认为空字符串。这就是您通常不使用unset
的原因:因为您通常会关闭nounset
选项并通过条件逻辑测试变量。因此,在这些情况下,即禁止使用变量,它是没有用的。 (显然,删除变量仍然有用 - 如@Walter A所述,即""不是unset
,完全删除变量。)
2)那就是说,如果你使用nounset
,unset
命令是有道理的。实际上,如果取消设置变量,shell将禁止使用它。