bash脚本:结合var = $(...)和var = $ {var %% ...}行?

时间:2016-01-05 00:37:05

标签: linux bash

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

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

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

1 个答案:

答案 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)