我有一個運行在Linux上的BASH/shell腳本,但它有時在使用blkid獲取驅動器標籤時出現問題.. blkid獲取驅動器標籤和UUID給定的驅動器。 BLKID輸出的BASH/shell腳本,blkid失敗,驅動器標籤中有換行符
例子:
# blkid /dev/sda1
/dev/sda1: LABEL="Home" UUID="f1e5e82b-1c75-4fd7-8841-6ad766152dcf" TYPE="ext2"
當驅動器標籤有一個換行符將出現問題...我已經包含相關功能。這個問題似乎與eval命令..有人可以幫助我嗎?
blkid_name_generator() {
#Gather blkid output and filter out required device
if [ ! -f /tmp/blkid.txt ]; then
blkid -c /dev/null > /tmp/blkid.txt
fi
blkid_cleaner &
LABEL=""
LABEL1=""
eval $(cat /tmp/blkid.txt | grep "[email protected]:" | cut --delimiter=" " -f 2- | sed -e 's/ /;/g')
LABEL1=${LABEL//;/ } # akita beta4 fix: remove newlines below
LABEL=`echo $LABEL1 | tr -d '\n'` # akita beta5 fix, remove newlines from drive label
#Generate drive label
[ "$LABEL" = "" ] && ONEDRVLABEL="[email protected]\n \n " || ONEDRVLABEL="${LABEL}\n([email protected])\n "
echo "${LABEL}" and "${ONEDRVLABEL}"
}
blkid_name_generator /dev/sda1
什麼是blkid_cleaner?它修改/tmp/blkid.txt的內容嗎? – Kashyap
當然,最明顯的修復方法是拒絕錯誤的卷名稱。 – sehe
是的,嘗試了各種忽略狡猾標籤的方式......每當有新行時,我都會收到'eval'的錯誤...我不確定,blkid_cleaner沒有安裝,但可以使用發佈的功能而不是實現我想要的 – sc0ttman