GNU/Linux >> Linux の 問題 >  >> Linux

% は Linux シェル文字列で何をしますか?

%のとき パターン ${variable%substring} で使用されます variable のコンテンツを返します substring の最短出現 variable の後ろから削除 .

この関数はワイルドカード パターンをサポートしています。そのため、0 個以上の文字の代わりに星 (アスタリスク) を使用できます。

これは Bash 固有のものであることに注意してください。他の Linux シェルには、必ずしもこの機能が含まれているわけではありません。

Bash での文字列操作について詳しく知りたい場合は、このページを読むことを強くお勧めします。他の便利な機能の中で、たとえば %% の機能について説明しています してください:)

編集:パターン $((variable%number)) で使用されている場合に言及するのを忘れていました または $((variable1%$variable2)) % 文字はモジュロ演算子として機能します。 DavidPostill の回答には、より具体的なドキュメントへのリンクがあります。

%のとき 異なるコンテキストで使用されている場合、通常の文字のみとして認識されるべきです。


<ブロック引用>

Bash リファレンス マニュアル:シェル パラメータの展開

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

単語 ファイル名の展開と同じように、パターンを生成するように展開されます。パターンが parameter の展開された値の末尾部分と一致する場合 の場合、展開の結果は parameter の値です 最短の一致パターン (‘%’ ケース) または最長一致パターン (‘%%’ ケース)を削除しました。 If パラメータ ‘@’ です または ‘*’, パターン除去操作は各位置パラメーターに順番に適用され、展開は結果リストです。 If パラメータ ‘@’ で添字付けされた配列変数です または ‘*’, パターン除去操作は配列の各メンバーに順番に適用され、展開は結果のリストです。


実験の結果、文字列が中かっこ (中かっこ) で囲まれている場合、% の後の一致は破棄されることがわかりました。

説明するには:

touch abcd         # Create file abcd

for file in ab*; do
 echo $file        # echoes the filename
 echo $file%       # echoes the filename plus "%"
 echo ${file%}     # echoes the filename
 echo "${file%}"   # echoes the filename
 echo
 echo "${file%c*}" # Discard anything after % matching c*
 echo "${file%*}"  # * is not greedy
 echo ${file%c*}   # Without quotes works too
 echo "${file%c}"  # No match after %, no effect
 echo $file%c*     # Without {} fails
done

出力は次のとおりです:

abcd
abcd%
abcd
abcd

ab
abcd
ab
abcd
abcd%c*

Linux
  1. Korn Shellの「set-f」は何をしますか?

  2. この Linux コマンドの - はどういう意味ですか?

  3. Unix/Linux での負荷平均とはどういう意味ですか?

  1. Linuxユーザーとは何ですか?

  2. Linux –「makeLocalmodconfig」は何をしますか?

  3. `:-`はシェルスクリプトで何を意味しますか?

  1. Linux – Linuxの「nointremap」オプションは何をしますか?

  2. エコー$は何ですか?行う??

  3. set -x は何をしますか?