是否有任何标准涵盖在同一行上的变量赋值后运行命令的可移植性?
APPLE="cider" echo hi
Run Code Online (Sandbox Code Playgroud)
这样的东西有多便携?它会在哪里工作,在哪里不会?
另外:如果这有什么不同,我的 shell 脚本以 #!/bin/sh 开头。
在研究有关 Bash 子 shell 的更深入信息时,我遇到了一个有趣的执行,我想了解它为何有效。执行涉及将字符串分配给变量,然后在man调用时使用该变量,链接到原始示例。我已经读过为什么LESS在该示例中使用特定变量(在许多发行版中man作为less默认分页器),我不明白的是命令执行后的变量赋值如何在没有任何类型的分隔元字符的情况下工作。
LESS=+/'OPTIONS' man manman直接在该部分下打开命令的手册页OPTIONS。它适用于直接使用less太打开的文件(这使我相信该LESS变量的使用less方式与在“会话”中进行正则表达式搜索相同less)。该LESS变量不会被导出,它永远不会保存在当前的 shell 环境中(执行不会echo $LESS返回任何内容),那么如何less捕获该值呢?
为什么这有效,但不是类似的东西foo='hello' echo $foo?;仅当变量赋值和命令执行之间包含命令分隔符 ( ) 时,这种情况才有效。我什至尝试过foo=+'hello' echo $foo以防万一=+在 Bash 中做了一些我不知道的事情,但输出没有变化。
欢迎任何解释或阅读材料!