Próbuję usunąć wersję z nazwy pakietu za pomocą tylko Bash. Mam jedno rozwiązanie, ale nie sądzę, że jest to najlepsze rozwiązanie, więc chciałbym się dowiedzieć, czy jest lepszy sposób na zrobienie tego. przez lepsze rozumiem czystsze, łatwiejsze do zrozumienia.wersja taśmy z nazwy pakietu przy użyciu Bash
Załóżmy, że mam ciąg "my-program-1.0" i chcę tylko "mój program". moje obecne rozwiązanie to:
#!/bin/bash
PROGRAM_FULL="my-program-1.0"
INDEX_OF_LAST_CHARACTER=`awk '{print match($0, "[A-Za-z0-9]-[0-9]")} <<< $PROGRAM_FULL`
PROGRAM_NAME=`cut -c -$INDEX_OF_LAST_CHARACTER <<< $PROGRAM_FULL`
W rzeczywistości składnia "nazwa pakietu" jest nazwą pliku RPM, jeśli ma to znaczenie.
dziękuję!
jak o perspektywie Przypuszcza 'sed„s/[-0-9.] * $ // "'? – BCS
@BCS: Albo coś trochę bardziej ostrożnego; twoje mecze z 'program-name-3 ... 4--789', na przykład, lub bardziej realistycznie, przeciwko' program-name2-1.0' (niepoprawnie usuwa także 2). – Cascabel
Zwróć uwagę, że wersja * może * zawierać również litery. –