无法将变量传递到其他命令

无法将变量传递到其他命令

我正在尝试将变量传递给另一个 shell 命令。

要清楚;

passwdContent=$( getent passwd "$USER" )
echo "passwdcontent" $passwdContent

我从用户“x”获取了“passwd”字段。在本节之后,我想使用这个变量。

但在这里我无法解决如何传递“passwdContent”变量。我尝试了这样的方法;

exampleVariable=[( "$passwdContent" | cut -d : -f 1 )]

当我想回显“exampleVariable”时,它给出了错误。

我知道我可以用一行代码完成这一切。但我想知道如何才能做到这一点。

答案1

您应该使用命令替换,但这样做会丢失一个$

您还应该将pipe变量的内容添加到cut或从中读取stdin

因此请使用这个:

$ exampleVariable="[$(cut -d: -f1 <<<$passwdContent )]"

现在:

$ echo "$exampleVariable"
[ravexina]

答案2

解析 getent 输出的另一种方法。

$ [[ $(getent passwd "$USER") =~ ([^:]+):x: ]] && var=${BASH_REMATCH[1]}

相关内容