Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在同一变量集合行中组合多个bash参数替换,而不使用任何其他命令_Bash_Variables_Parameters_Concatenation_Substitution - Fatal编程技术网

在同一变量集合行中组合多个bash参数替换,而不使用任何其他命令

在同一变量集合行中组合多个bash参数替换,而不使用任何其他命令,bash,variables,parameters,concatenation,substitution,Bash,Variables,Parameters,Concatenation,Substitution,我想要组合的示例: sVar=$(whoami) sVar=${sVar^} sVar=${sVar::1} 输出: 用户名的大写第一个字符 要求: 一班轮 除了$(whoami)以上的初始命令替换之外,其余的处理都使用参数替换 我意识到这可以通过tr、sed、awk、printf、cut等实现。;但这不是问题的重点 任何帮助都是感激的 这不是真正的代码,也不是我真正想做的事情。我通常默认(或尝试)只使用一个命令而不是连接多个命令 我看到其他帖子说在大括号内连接是不可能的,但我知道一切

我想要组合的示例:

sVar=$(whoami)
sVar=${sVar^}
sVar=${sVar::1}
输出:

  • 用户名的大写第一个字符
要求:

  • 一班轮
  • 除了$(whoami)以上的初始命令替换之外,其余的处理都使用参数替换
我意识到这可以通过tr、sed、awk、printf、cut等实现。;但这不是问题的重点

任何帮助都是感激的

这不是真正的代码,也不是我真正想做的事情。我通常默认(或尝试)只使用一个命令而不是连接多个命令

我看到其他帖子说在大括号内连接是不可能的,但我知道一切都是可能的

请不要:

  • 引用其他文章作为重复,说这是不可能的
一个衬里:

sVar=$(whoami) sVar=${sVar^} sVar=${sVar::1}
它可能不是您想要的,但它肯定是一个命令,并使用参数替换。一个命令可以由多个变量赋值组成,在这种情况下,它们从左到右执行

参数替换的主题是变量名、间接寻址(a!后跟变量名)或下标表达式(变量名—不是间接寻址—后跟[and]中的下标)。当然,这有点有限,但这是bash。(Posix外壳的限制性更强;它没有间接寻址和数组,扩展类型更少。)


XCU的Posix措辞,重点补充:

当需要执行给定的简单命令时……应从命令文本的开头到结尾执行以下扩展、分配和重定向:

  • 在赋值之前,应展开每个变量赋值,以进行波浪线展开、参数展开、命令替换、算术展开和引号删除

  • 好吧,不可能在一个命令中进行多个参数替换。为什么您有这样的要求?如果您在同一行上执行多个由
    分隔的命令,它算一行吗?
    sVar=$(whoami);sVar=${sVar^};sVar=${sVar::1}
    如果你要发布这样的内容,它应该得到赏金。即使有可能,也不应该这样做,因此这是一个学术测试。@cyrus:你可以省去分号。一个命令可以包含多个变量赋值,它们是从左到右(“从命令文本的开头到结尾”)执行的,正如Posix所说。)