İşte benim kabuk betiğimin bir pasajı -
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
Ama bana şu çıktıları gösteriyor -
<version>1.1.7-release</version> <!-- ABC version -->
abc/xyz/pom.xml: Version not Found
Fakat benim anlayışıma göre regex, grep(daha iyi netlik için terminale ekledim) çıktısı ile eşleşmelidir . Birisi neyi yanlış yaptığımı söyleyebilir mi?
Bunu eşyalarını içeren bir dosyada denedim, ve eşleşiyor ... baskı yayının ne? (bash
—
version
Ayrıca, çıktı tam olarak
—
Gordon Davisson
grepnedir? echo $(grep ...)Çıktıyı çeşitli şekillerde tutacağım (aslında, echo $(somecommand)neredeyse her zaman kötü bir fikir) Deneyin grep ... | LC_ALL=C cat -vet- catkomut, normal olarak görünmeyen çeşitli karakterleri görünür formlara dönüştürür ve her satırın sonuna "$" ekler, böylece nerede olduklarını görebilirsiniz.
Hatayı buldum, bunun sebebi
—
canavar
export -f custom_function, custom_function işlevinin kullanılması xargsve aboce snippet'inin custom_funcion'un bir parçası olmasıydı. zaman ayırdığınız için teşekkürler