gpt4 book ai didi

linux - bash 脚本 : combine var=$(. ..) 和 var=${var%%...} 行?

转载 作者:太空宇宙 更新时间:2023-11-04 09:27:38 27 4
gpt4 key购买 nike

是否可能,如果可以,如何将以下表达式转换为一行?

DEV=$(lsblk -no KNAME,MODEL | grep 'ModelNAME')
DEV=${DEV%%'ModelNAME'}

简单的 DEV=${(lsblk -no KNAME,MODEL | grep 'ModelNAME')%%'ModelNAME'} 不起作用

最佳答案

zsh 允许您组合参数扩展。 Bash 没有。

对于 bash 或 POSIX sh(两者都支持此特定参数扩展),您需要将其作为两个单独的命令执行。


也就是说, 还有其他可用选项。例如:

# tell awk to print first field and exit on a match
dev=$(lsblk -no KNAME,MODEL | awk '/ModelNAME/ { print $1; exit }')

...或者,更简单(但需要 bash 或其他现代 ksh 衍生物):

# read first field of first line returned by grep; _ is a placeholder for other fields
read -r dev _ < <(lsblk -no KNAME,MODEL | grep -e ModelNAME)

关于linux - bash 脚本 : combine var=$(. ..) 和 var=${var%%...} 行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34602438/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com