Pangkas variabel di bash [duplikat]

Sep 19 2020

Saya perlu memangkas variabel wordpress.tar.gzmenjadi wordpress.

Saya sudah mencoba:

#!/bin/bash
dir=wordpress.tar.gz
echo $dir RELEASE=$($dir | sed "s/-.tar.gz//") echo ${RELEASE}

Jawaban

2 WiktorStribiżew Sep 19 2020 at 20:43

Anda dapat menggunakan ekspansi string:

RELEASE="${dir%%.*}"

Lihat demo Bash online :

dir=wordpress.tar.gz
RELEASE="${dir%%.*}"
echo "$RELEASE"
# => wordpress

Bagian ini ${dir%%.*}menghapus potongan teks terpanjang dari akhir (karena %%) hingga karakter titik pertama.

Jika Anda ingin menggunakan sed, Anda dapat menghapus semua string yang dimulai dengan (dan termasuk) titik pertama:

RELEASE="$(sed 's/\..*//' <<< $dir)"

Di sini, \..*cocokkan titik dan kemudian karakter nol atau lebih ke akhir string, dan kecocokan diganti dengan string kosong (dihapus) karena kanan kiri.

1 MichaelO. Sep 19 2020 at 20:42
RELEASE=$(echo $dir | sed "s/\.tar\.gz//")