Centos

腳本表達式來獲取字元串的一部分?

  • November 1, 2012

我在 CentOS 中使用 bash shell,版本…

$ uname -a
Linux mydomain.com 3.2.29-48.63.amzn1.x86_64 #1 SMP Sat Sep 15 01:43:12 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux

在我的 shell 腳本中,我想獲取字元串的一部分,特別是最後一個破折號(“-”)之前的所有內容。所以如果我的字元串是“my-importer-1.0.ear”,我想提取“my-importer”。但是,下面的表達式

prefix=${fname%-*}

只返回“我的”,因為它與第一個破折號匹配。如何調整表達式以匹配所有內容,直到最後一個破折號?

你確定你沒有使用%%which 從字元串末尾刪除最長的匹配,從而給你my,而 a%刪除最短的匹配並提供(例如)你想要的

fname=my-importer-1.0.ear
echo ${fname%%-*}
my

然而

echo ${fname%-*}
my-importer

引用自:https://serverfault.com/questions/444511