İş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
grep
nedir? 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
- cat
komut, 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ı xargs
ve aboce snippet'inin custom_funcion'un bir parçası olmasıydı. zaman ayırdığınız için teşekkürler