shell 展开命令的输出,然后才将其赋给变量

cwdobuhd  于 2023-01-05  发布在  Shell
关注(0)|答案(1)|浏览(117)

考虑以下任务:使用一行命令将所有转换为大写字母的用户名保存在名为USERNAMES的bash数组中。使用bash变量扩展进行大写字母转换
如果不是因为一行的限制,我将使用

USERNAMES=($(ls /home)) # simplified for purposes of this question, returns (user1 user2 ...)
USERNAMES=(${USERNAMES[*]^^}) # must return (USER1 USER2 ...)

但是所有试图将第一个赋值语句嵌套到变量扩展(如USERNAMES=${($(ls /home))^^}或类似变量)的尝试都会导致“bad substitution”错误。我使用的是bash 4.4.20(1)-release。

szqfcxe2

szqfcxe21#

USERNAMES=($(\ls -1 /)); USERNAMES=("${USERNAMES[@]^^}")

相关问题