web-dev-qa-db-ja.com

Bash変数の最初の文字を取得する方法は?

私はBash変数$Wordを持っていますが、これは時々Wordまたは文です:

Word="tiger"

または:

Word="This is a sentence."

変数で見つかった最初の文字のみに等しい新しいBash変数を作成するにはどうすればよいですか?たとえば、上記は次のようになります。

echo $firstletter
t

または:

echo $firstletter
T
74
Village
initial="$(echo $Word | head -c 1)"

問題の説明で「最初」と言うたびに、headが解決策になる可能性があります。

25
thiton
Word="tiger"
firstletter=${Word:0:1}
232
Karoly Horvath
Word=something
first=${Word::1}
67
Adam Liss

移植性のある方法は、 パラメータ拡張(POSIX機能) を使用することです。

$ Word='tiger'
$ echo "${Word%"${Word#?}"}"
t
10

カットあり:

Word='tiger'
echo "${Word}" | cut -c 1
2
Franckyz

sedタグがあるので、ここにsedの答えがあります:

_echo "$Word" | sed -e "{ s/^\(.\).*/\1/ ; q }"
_

それらを楽しむ人のためにプレイバイプレイ(私はやる!):

_{_

  • s:置換ルーチンを開始します
    • _/_:置換対象の指定を開始します
    • ^\(.\):グループ1の最初の文字をキャプチャします
    • _.*_ :、行の残りが置換にあることを確認してください
    • _/_:置換の指定を開始
    • _\1_:グループ1を挿入
    • _/_:残りは破棄されます_;_
  • qsedを終了し、他の行がある場合はこのブロックを繰り返さないようにします。

_}_

まあそれは楽しかったです! _:)_ grepなどを使用することもできますが、bashを使用している場合は、_${x:0:1}_ magickが依然として優れたソリューションです。 (私はそれを行うためにPOSIX変数展開を使用しようとして1時間ほど費やしましたが、_:(_できませんでした)

2
phicr

Bash 4を使用する:

x="test"
read -N 1 var <<< "${x}"
echo "${var}"
1
leogtzr