Как получить первую букву в переменной Bash?

у меня есть переменная Bash,$word, что иногда является словом или предложением, например:

word="tiger"

или:

word="This is a sentence."

как я могу сделать новую переменную Bash, которая равна только первой букве, найденной в переменной? Е. Г., выше будет:

echo $firstletter
t

или:

echo $firstletter
T

7 ответов


initial="$(echo $word | head -c 1)"

каждый раз, когда вы говорите "первый" в вашем описании проблемы, head является вероятным решением.


word="tiger"
firstletter=${word:0:1}

word=something
first=${word::1}

портативный способ сделать это-использовать расширение параметров (которое является функцией POSIX):

word='tiger'
first="${word%"${word#?}"}"

так как у вас есть sed тег здесь sed ответ:

echo "$word" | sed -e "{ s/^\(.\).*// ; q }"

играть, играть для тех, кто любит тех, кто (я!):

{

  • s: начать замену обычной
    • /: начните указывать, что нужно заменить
    • ^\(.\): захват первого символа в группе 1
    • .*: убедитесь, что остальная часть линии будет в замена
    • /: начните указывать замену
    • : вставка 1-я группа
    • /: остальное отбрасывается;
  • q: Quit sed поэтому он не будет повторять этот блок для других строк, если они есть.

}

да, это было весело! :) вы также можете использовать grep и т. д. Но если ты в bash на ${x:0:1} магия по-прежнему лучше решение ИМО. (Я потратил около часа, пытаясь использовать расширение переменной POSIX для этого, но не смог :( )


использование bash 4:

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

с вырезом :

word='tiger'
echo "${word}" | cut -c 1