bash - Bash中单行中用空格分隔的多个变量赋值
问题描述
对于 bash 中的变量赋值,我通常执行以下操作:
a=1
b=2
c=3
如果它在一行中完成,它将像:
a=1; b=2; c=3
最近我看到了一些代码,例如:
a=1 b=2 c=3
分配由空格分隔,它正在工作。我试图用谷歌搜索这种方法,但无法快速找到教科书的答案。现在我只知道,它有效。
那么,所有 shell 都支持这种语法,还是一种标准方法?
解决方案
这是标准方法吗?
是的。
从posix shell language 2.9.1 Simple Commands强调我的:
“简单命令”是一系列可选的变量分配和重定向,以任何顺序,可选地后跟单词和重定向,由控制运算符终止。
[...]
如果没有产生命令名,变量赋值将影响当前的执行环境。[...]
从shell语法也可以看出:
simple_command : cmd_prefix cmd_word cmd_suffix
| cmd_prefix cmd_word
| cmd_prefix
| cmd_name cmd_suffix
| cmd_name
cmd_prefix : io_redirect
| cmd_prefix io_redirect
| ASSIGNMENT_WORD
| cmd_prefix ASSIGNMENT_WORD
您可以在命令之前放置任意数量的分配(和重定向)。如果没有命令,分配将影响当前 shell。
推荐阅读
- sql - 尝试使用 symfony 创建 Web 服务时出现问题
- php - 从 Laravel 的视图中 PUT 数据
- sql - 获取所有从未休假过的员工的姓名
- wordpress - Woocommerce 设置失败
- php - 如何在 MySQL for Laravel 的 Created_at 列中选择最新日期
- java - 在文件中定义名称为“covidController”的 Spring 错误创建 bean
- php - 在 HTML 代码中围绕字符串包装 HTML 标记
- python - 正则表达式 sub() 方法似乎用替换组替换了每个字符
- python - 使用 sender() 获取按钮文本总是返回错误 — 'NoneType' 对象没有属性 'text'
- python - 如何检查 SQLAlchemy 中的会话当前跟踪哪些对象?