2016-09-08 6 views
-2

私たちは、次の構文が正常に動作しますシェルで##と%は何を意味しますか?

[[email protected] Desktop]$ export FILE="filename.txt" 

文字列から「ファイル名」と「ファイル拡張子」を取得しなければなりませんでした。しかし、私たちは '## 'と理解したいと思います。と '%。は、「すべてのヘルプは

+1

マニュアルを読んでみませんか? bashの場合は、[ここ](http://linux.die.net/man/1/bash)です。 「パラメータの拡張」を参照してください。 – kaylum

答えて

0

あなたの出発点はbash manualShell Parameter Expansionで特にセクションを読むことであろういいだろう

[[email protected] Desktop]$ echo ${FILE##*.} 
txt 
[[email protected] Desktop]$ echo ${FILE%.*} 
filename 

動作します。

いくつかの関連の抜粋:

${parameter#word}
${parameter##word}

ワード は、ファイル名だけ 膨張のようなパターンを生成するように拡張される(ファイル名展開を参照)。パターンは、パラメータの拡張値の 先頭と一致する場合、 次いで膨張の結果が最短マッチングパターン(‘#’場合)または 最長一致パターン(‘#持つパラメータ を展開した値であります#’ケース)が削除されました。パラメータがある場合は ‘、’ ’ @または‘パターン除去操作は、順番に各位置 パラメータに適用され、そして膨張が得られたリストです。 パラメータが’又は ’ ‘、 @ ‘と添字配列変数である場合、パターン除去操作を順番に アレイの各メンバーに適用し、膨張が得られたリストです。

${parameter%word}
${parameter%%word}

ワードだけ ファイル名の拡張と同様のパターンを生成するように拡張されます。 パターンは、パラメータの拡張値の末尾の部分と一致する場合、膨張の結果が最短マッチングパターン(‘% ’場合) または最長一致パターン(‘%と パラメータの値であります%’ケース)が削除されました。パラメータがある場合は ‘、’ ’ @または‘パターン除去操作は、順番に各位置 パラメータに適用され、そして膨張が得られたリストです。 パラメータである場合は、配列変数は、’又は ’ ‘、 パターン除去操作を順番に アレイの各メンバーに適用される@ ‘と添字、および拡張は、結果のリストです。

関連する問題