私はBash変数$Word
を持っていますが、これは時々Wordまたは文です:
Word="tiger"
または:
Word="This is a sentence."
変数で見つかった最初の文字のみに等しい新しいBash変数を作成するにはどうすればよいですか?たとえば、上記は次のようになります。
echo $firstletter
t
または:
echo $firstletter
T
initial="$(echo $Word | head -c 1)"
問題の説明で「最初」と言うたびに、head
が解決策になる可能性があります。
Word="tiger"
firstletter=${Word:0:1}
Word=something
first=${Word::1}
移植性のある方法は、 パラメータ拡張(POSIX機能) を使用することです。
$ Word='tiger'
$ echo "${Word%"${Word#?}"}"
t
カットあり:
Word='tiger'
echo "${Word}" | cut -c 1
sed
タグがあるので、ここにsed
の答えがあります:
_echo "$Word" | sed -e "{ s/^\(.\).*/\1/ ; q }"
_
それらを楽しむ人のためにプレイバイプレイ(私はやる!):
_{
_
s
:置換ルーチンを開始します/
_:置換対象の指定を開始します^\(.\)
:グループ1の最初の文字をキャプチャします.*
_ :、行の残りが置換にあることを確認してください/
_:置換の指定を開始\1
_:グループ1を挿入/
_:残りは破棄されます_;
_q
:sed
を終了し、他の行がある場合はこのブロックを繰り返さないようにします。_}
_
まあそれは楽しかったです! _:)
_ grep
などを使用することもできますが、bash
を使用している場合は、_${x:0:1}
_ magickが依然として優れたソリューションです。 (私はそれを行うためにPOSIX変数展開を使用しようとして1時間ほど費やしましたが、_:(
_できませんでした)
Bash 4を使用する:
x="test"
read -N 1 var <<< "${x}"
echo "${var}"