Ini cuplikan dari skrip shell saya -
regex="<version>([0-9]*)\.([0-9]*)\.([0-9]*)([^<]*)<\/version>.*"
#some unrelated lines of code
echo $(grep -m 1 "<version>" $1)
if [[ $(grep -m 1 "<version>" $1) =~ $regex ]]
then
main_version = "${BASH_REMATCH[1]}"
feature_version = "${BASH_REMATCH[2]}"
patch_version = "${BASH_REMATCH[3]}"
tag = "${BASH_REMATCH[4]}"
else
echo "$1: Version not Found" >&2
fi
Tapi itu menunjukkan kepada saya output berikut -
<version>1.1.7-release</version> <!-- ABC version -->
abc/xyz/pom.xml: Version not Found
Namun menurut pemahaman saya, regex
harus sesuai dengan output dari grep
(Saya menggema ke terminal untuk kejelasan yang lebih baik). Jadi bisakah seseorang mengatakan kesalahan saya?
grep
?echo $(grep ...)
akan memotong-motong output dalam beberapa cara (pada kenyataannya,echo $(somecommand)
hampir selalu merupakan ide yang buruk). Mencobagrep ... | LC_ALL=C cat -vet
- itucat
perintah akan mengonversi berbagai karakter yang biasanya tidak terlihat ke bentuk yang terlihat, dan menambahkan "$" ke akhir setiap baris sehingga Anda dapat melihat di mana mereka berada.export -f custom_function
untuk menggunakan fungsi custom_ dalamxargs
dan tentu saja cuplikan di atas adalah bagian dari fungsi khusus. terima kasih telah memberikan waktu anda