簡體   English   中英

bash腳本:將var = $(…)和var = $ {var %%…}行結合起來?

[英]bash scripting: combine var=$(…) and var=${var%%…} lines?

是否可以?如果可以,如何將以下表達式轉換為單線?

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

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

zsh允許您組合參數擴展。 巴什沒有。

對於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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM