Tôi đang cố gắng loại bỏ phiên bản ra khỏi tên gói chỉ sử dụng Bash. Tôi có một giải pháp nhưng tôi không nghĩ đó là giải pháp tốt nhất có sẵn, vì vậy tôi muốn biết nếu có cách nào tốt hơn để làm điều đó. bởi tốt hơn tôi có nghĩa là sạch hơn, dễ hiểu hơn.phiên bản dải từ tên gói sử dụng Bash
giả sử tôi có chuỗi "chương trình của tôi-1.0" và tôi chỉ muốn "chương trình của tôi". giải pháp hiện tại của tôi là:
#!/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`
cú pháp "tên gói" là tên tệp RPM, nếu nó quan trọng.
cảm ơn!
thế nào về chạy nó nghĩ 'sed "s/[-0-9.] * $ // "'? – BCS
@BCS: Hoặc điều gì đó cẩn thận hơn một chút; của bạn phù hợp với 'program-name-3 ... 4--789', ví dụ, hoặc thực tế hơn, chống lại' program-name2-1.0' (không chính xác loại bỏ 2 là tốt). – Cascabel
Lưu ý rằng phiên bản * có thể * cũng có các chữ cái trong đó. –