1
我想定义一个函数defvar
定义的变量,例如我可以根据函数参数轻松定义一个变量吗?
defvar FOO BAR ## equivalent to FOO=BAR
然而,定义这样的功能不工作的简单的方式(因为壳结束执行整个字符串作为单个命令presumedly?)解决此
defvar() { $1=$2; } ## no dice
的一种方法是明确地执行作为export
调用的一部分的分配,例如
defvar() { export $1=$2; } ## works, but not portable to some older shells
这在我的本地bash
壳的作品,但它听起来像这可能not be portable,并且可能无法在一些较旧的贝壳工作。
是否有实现这个便携式机制?
*应*便携,在这个词的使用感。 – chepner
我不认为这将在原Bourne shell中工作,但希望您可以在POSIX(+)兼容性上画线。呃..不知道有关'灰烬'或'破折号'......任何人?祝你好运。 – shellter
使用导出的问题并不在于缺乏可移植性,而是它比赋值shell变量更多,即defvar正在尝试执行的操作。另外,它还将其标记为环境变量,即它输出变量。 – jlliagre