是否可以,如果是,如何将以下表达式转换为单行?
DEV=$(lsblk -no KNAME,MODEL | grep 'ModelNAME')
DEV=${DEV%%'ModelNAME'}
简单DEV=${(lsblk -no KNAME,MODEL | grep 'ModelNAME')%%'ModelNAME'}
不起作用
答案 0 :(得分:2)
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)