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?
Saya mencoba ini pada file yang berisi barang-barang Anda, dan itu cocok ... apa rilis pesta Anda? (bash --versi)
—
tonioc
Juga apa persis adalah keluaran dari
—
Gordon Davisson
grep
? echo $(grep ...)
akan memotong-motong output dalam beberapa cara (pada kenyataannya, echo $(somecommand)
hampir selalu merupakan ide yang buruk). Mencoba grep ... | LC_ALL=C cat -vet
- itu cat
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.
Saya menemukan kesalahan, itu disebabkan oleh
—
monster
export -f custom_function
untuk menggunakan fungsi custom_ dalam xargs
dan tentu saja cuplikan di atas adalah bagian dari fungsi khusus. terima kasih telah memberikan waktu anda