1. ホーム
  2. string

[解決済み] シェルで文字列の最後の文字を取得する方法は?

2022-05-03 21:29:28

質問

文字列の最後の文字を取得するために、次のような行を書きました。

str=$1
i=$((${#str}-1))
echo ${str:$i:1}

のために動作します。 abcd/ :

$ bash last_ch.sh abcd/
/

それは には使えません。 abcd* :

$ bash last_ch.sh abcd*
array.sh assign.sh date.sh dict.sh full_path.sh last_ch.sh

それは 現在のフォルダーにあるファイルを一覧表示します。 .

解決するには?

それが、変数を引用する必要がある理由の一つです。

echo "${str:$i:1}"

そうでない場合は、bashは変数を展開し、この場合はグロビングを行ってからプリントアウトします。また、スクリプトのパラメータを引用符で囲むとよいでしょう(一致するファイル名がある場合に備えて)。

sh lash_ch.sh 'abcde*'

の展開の順番も見てください。 バッシュリファレンスマニュアル . 変数は、ファイル名の展開の前に展開されます。

最後の文字を取得するためには、単に -1 というのは、負のインデックスは文字列の末尾から数えるからです。

echo "${str: -1}"

コロンの後のスペース( : は必須項目です。

この方法は、スペースがないとうまくいきません。