shell 擷取檔案尾碼

來源:互聯網
上載者:User

在某個makefile檔案中通過include引入某個檔案進來

Include $(shell ./getname)

而getname中的內容即為:

pwd=$(pwd);

if [ "${pwd#*/zloader.}" = "$pwd" ];then

echo Makefile.cpci

else

echo Makefile.${pwd#*/zloader.}

fi

一直沒看懂${pwd#*/zloader.}  這個代表什麼意思,後來才知道其實得到的是Make file檔案的尾碼名。

如果是pwd= /xxx/yyy/zloader.bios,那麼需要得到的是Makefile.bios,其中 ${pwd#*/zloader.} = bios。其中${aaa#bbb}是一個Regex,而'*/ '表示pwd中路徑字串中zloader前面的全部部分。

解釋:

${parameter#pattern}

Substitute the value of parameter with patternremoved from the left side. The smallest portion of the contents of parametermatching pattern is removed. Shell filename substitution characters (*, ?,[...], !, and @) may be used in pattern.

在Linux下嘗試一下指令碼,即可證明。

#!/bin/sh

mkdir -p zloader./xxdir

cd zloader./xxdir

pwd=$(pwd)

echo "pwd = $pwd"

echo "this will substitue pwd about the patternzloader. , into NULL"

echo "${pwd#*/zloader.}"

cd ../..

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.