将 shell 变量传递到 shell 脚本中的参数 [duplicate]

passing shell variable into parameter in shell script [duplicate]

提问人:andio 提问时间:11/6/2023 更新时间:11/15/2023 访问量:38

问:

我正在运行此命令来查找挂载的网络文件夹:

df | awk '/[email protected]/ { print $1 }'

这段代码工作正常,但我想使用“USER”变量传递它,而不是使用“andi”。如果我回显 USER var,它会显示正确的值。

回声$USER

安 迪

但是当我使用 var 时它不起作用。似乎单引号对不适用于$VAR:

df | awk '/[email protected]/ { print $1 }'

在这种情况下,我应该如何使用 var ?

shell 变量

评论

0赞 Mark Setchell 11/6/2023
类似的东西会使变量变成变量。awk -v user=$USER '$1 ~ user {print $1}'bashawk
0赞 Mark Setchell 11/6/2023
...尽管您可能希望定义一个字段分隔符来将用户名与挂载分开,即awk -F@ ...

答:

0赞 user1934428 11/6/2023 #1

如您所见,单引号之间不执行参数扩展。因此必须在单引号之外,而必须在单引号内:$USER$1

df | awk /[email protected]/' { print $1 }'

为了应对存储的名称包含空格的可能性,您也可以将其写为USER

df | awk "/[email protected]/"' { print $1 }'

因为参数扩展是在双引号内完成的。只需确保将程序视为单个参数即可。因此,我们不能在开头单引号前面有一个空格。awk