是否可以在bash中typeset -i
(与declare -i
,see a manpage或a reference同义)而不分配变量?
考虑以下示例:
typeset -i a=42;
foo $a;
是否可以在不使用辅助变量的情况下实现相同的功能?
假设foo
不易编辑(例如,二进制文件)。
答案 0 :(得分:2)
将类型的声明放在函数体内。您可以使用declare
或(更明确)local
来实现此目的:
foo() {
local -i arg=$1
....
}
如果没有修改函数的主体(或者在将参数作为无类型字符串传递之前添加执行类型检查的包装器),则不可能有其他解决方案,因为函数参数(和外部命令)作为字符串传递,无论事先可能做出的任何类型声明。