variable1="ABC
XYZ
DEF"
變量都值分隔「\ n」如何找到在2個變量共同價值觀在shell腳本
variable2="MNO
ABC
PQR"
如何從雙方找到共同的價值「ABC」並將其存儲在一個新變量?
variable1="ABC
XYZ
DEF"
變量都值分隔「\ n」如何找到在2個變量共同價值觀在shell腳本
variable2="MNO
ABC
PQR"
如何從雙方找到共同的價值「ABC」並將其存儲在一個新變量?
如果您可以將這些變量輸出到文件中,則可以使用comm。
echo "ABC\nXYZ\nDEF" | sort > va1
echo "MNO\nABC\nPQR" | sort > va2
comm -12 va1 va2
編輯:
@ZoltánNagy提供了一個行版本:
comm -12 <(echo -e "b\na\nc"|sort) <(echo -e "a\nb"|sort)
cool ;我不知道comm;)另外你可以使用內聯輸入創建'comm -12 <(echo -e「b \ na \ nc」| sort)<(echo -e「a \ nb」| sort)' –
perfect ,作品:) –
@ZoltánNagy是的!謝謝你的建議!我將編輯答案。 – qqibrow
你可以簡單地
echo "$variable1" | grep -Fx "$variable2"
這是移植到POSIX外殼。在一般情況下,假設你不關心POSIX兼容性(在這種情況下,我會推薦使用Bash數組來保存一個變量中的離散值列表,而不是把它們放在換行符分隔的字符串中這個問題不應該被標記爲bash)。
迭代這兩個變量並比較這些值,直到找到兩個相同的值(假設這些值由'\ n'分隔爲空白,它將與通常的'for x in ...'一起使用) – Fernando