私はBash変数を持っています、 $wordこれは時々単語や文です。例:
word="tiger"
または:
word="This is a sentence."
変数にある最初の文字だけに等しい新しいBash変数を作成するにはどうすればよいですか?たとえば、上記は次のようになります。
echo $firstletter
t
または:
echo $firstletter
T
回答:
initial="$(echo $word | head -c 1)"
問題の説明で「最初に」と言うたびに、head解決策になる可能性があります。
${word:0:1}または${word::1}。
echo "$word" | fold -w1 | head -n 1、 printf '%.1s' "$X"またはprintf '%c' "$X"これらは、すべてのシングルVの対象となっている。マルチバイト文字ペテン。
head -c n、おっと。 echo "fábio" | head -c 2を与えるf� ので、これは別の問題だと思います。
word="tiger"
firstletter=${word:0:1}
word=something
first=${word::1}
first、文字に設定されsます。あなたはそれをで見ることができますecho $s。それでも問題が解決せず、デバッグのサポートが必要な場合は、入力したコマンドとその出力をコピーして貼り付けてください。
これを行うための移植可能な方法は、パラメーター展開(POSIX機能)を使用することです。
$ word='tiger'
$ echo "${word%"${word#?}"}"
t
sedここにタグがあるので、sed答えは次のとおりです。
echo "$word" | sed -e "{ s/^\(.\).*/\1/ ; q }"
それらを楽しむ人のために遊びごとに遊ぶ(私はそうする!):
{
s:置換ルーチンを開始します
/:何を置き換えるかを指定し始める^\(.\):グループ1の最初のキャラクターをキャプチャします.*:、行の残りの部分が置換されることを確認してください/:置換の指定を開始します\1:グループ1を挿入/:残りは破棄されます;q:終了しsedて、他の行がある場合にこのブロックが繰り返されないようにします。}
楽しかったです!などを:)使用することもgrepできますがbash、${x:0:1}魔術を使用している場合でも、より優れたソリューションimoです。(私はそれを行うためにPOSIX変数拡張を使用しようとして1時間ほど費やしましたが、できませんでした:( )
-cPOSIXヘッドにはオプションがないことに注意してください:< unix.com/man-page/posix/1/head >。