所以基本上我想知道是否可以只在shell脚本命令之前定义变量?
$ FOO=bar myscript.sh
或
$ myscript.sh FOO=bar
在myscript.sh
中,只需获取FOO
,类似于获取参数的方式。
非常感谢您的支持!
发布于 2018-07-03 08:46:15
$ FOO=bar myscript.sh
由shell处理,它会创建一个运行myscript.sh
的新环境,并将FOO=bar
添加到该环境中。环境变量不包含任何上下文信息;环境变量只是一个环境变量。myscript.sh
无法区分上述命令和序列:
export FOO=bar
# ...
myscript.sh
不管省略号省略了多少命令。
相比之下,
myscript.sh FOO=bar
只需将命令行选项传递给myscript.sh
,它将把FOO=bar
视为$1
的值。解析位置参数以找到赋值形式的参数相对容易,但必须小心避免误报。(即,仅使用包含=
字符的所有位置参数是不够的;应该检查前面的字符是否都是有效的标识符字符。)
https://stackoverflow.com/questions/51145189
复制相似问题