我正在尝试将变量传递给另一个 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]}