Cắt biến trong bash [trùng lặp]
Sep 19 2020
Tôi cần phải cắt biến wordpress.tar.gzthành wordpress.
Tôi đã thử:
#!/bin/bash
dir=wordpress.tar.gz
echo $dir RELEASE=$($dir | sed "s/-.tar.gz//") echo ${RELEASE}
Trả lời
2 WiktorStribiżew Sep 19 2020 at 20:43
Bạn có thể sử dụng mở rộng chuỗi:
RELEASE="${dir%%.*}"
Xem bản demo Bash trực tuyến :
dir=wordpress.tar.gz
RELEASE="${dir%%.*}"
echo "$RELEASE"
# => wordpress
Phần ${dir%%.*}loại bỏ đoạn văn bản dài nhất từ cuối (do %%) cho đến dấu chấm đầu tiên.
Nếu bạn muốn sử dụng sed, bạn có thể xóa tất cả chuỗi bắt đầu bằng (và bao gồm) dấu chấm đầu tiên:
RELEASE="$(sed 's/\..*//' <<< $dir)"
Ở đây, \..*khớp với một dấu chấm và sau đó so khớp bất kỳ ký tự nào hoặc nhiều ký tự ở cuối chuỗi và kết quả khớp được thay thế bằng một chuỗi trống (bị xóa) vì RHS trống.
1 MichaelO. Sep 19 2020 at 20:42
RELEASE=$(echo $dir | sed "s/\.tar\.gz//")