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//")