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

jgs*_*key -5 variables parameters bash concatenation substitution

我想结合的例子:

sVar=$(whoami)
sVar=${sVar^}
sVar=${sVar::1}
Run Code Online (Sandbox Code Playgroud)

输出:

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

要求:

  • 单线
  • 除了 $(whoami) 上面的初始命令替换之外,使用参数替换执行其余的处理

我意识到这可以用 tr、sed、awk、printf、cut 等来完成;但这不是问题的重点。

任何帮助表示赞赏!

这不是真正的代码或任何表明我真正想要做什么的东西。我经常默认(或尝试)只使用一个命令而不是连接多个命令。

我看到其他帖子指出在大括号内连接是不可能的,但我知道一切皆有可能。

请不要:

  • 引用其他帖子作为重复,说这是不可能的

ric*_*ici 5

一个班轮:

sVar=$(whoami) sVar=${sVar^} sVar=${sVar::1}
Run Code Online (Sandbox Code Playgroud)

它可能不是您要查找的内容,但它肯定是单个命令并使用参数替换。单个命令可以包含多个变量赋值,在这种情况下,它们是从左到右执行的。

参数替换的主题是变量名、间接(a!后跟变量名)或下标表达式(变量名 - 不是间接 - 后跟[and内的下标]。这有点限制,以可以肯定,但那是 bash。(Posix shell 的限制性更强;它没有间接或数组,并且扩展类型更少。)


来自 XCU 的 Posix 措辞,强调补充:

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

  1. 在赋值之前,每个变量赋值都应针对波浪号扩展、参数扩展、命令替换、算术扩展和引号删除进行扩展。