Tengo una variable Bash $word, que a veces es una palabra u oración, por ejemplo:
word="tiger"
O:
word="This is a sentence."
¿Cómo puedo hacer una nueva variable Bash que sea igual a solo la primera letra que se encuentra en la variable? Por ejemplo, lo anterior sería:
echo $firstletter
t
O:
echo $firstletter
T

-copción en el encabezado POSIX: < unix.com/man-page/posix/1/head >.${word:0:1}o${word::1}.echo "$word" | fold -w1 | head -n 1,printf '%.1s' "$X"oprintf '%c' "$X"pero estos son todos sujetos a una sola v. Chanchullos varios caracteres de bytes.head -c n, ¡Ups!echo "fábio" | head -c 2daf�, entonces ese es otro problema con esto, supongo.word="tiger" firstletter=${word:0:1}fuente
word=something first=${word::1}fuente
firstse ajusta a la letras. Puedes verlo conecho $s. Si eso no funciona para usted y desea ayuda con la depuración, copie y pegue los comandos que escribió y su salida.Una forma portátil de hacerlo es utilizar la expansión de parámetros (que es una función POSIX) :
$ word='tiger' $ echo "${word%"${word#?}"}" tfuente
Con corte:
word='tiger' echo "${word}" | cut -c 1fuente
Dado que tiene una
sedetiqueta, aquí hay unasedrespuesta:echo "$word" | sed -e "{ s/^\(.\).*/\1/ ; q }"Juego a juego para los que disfrutan (¡yo sí!):
{s: inicia una rutina de sustitución/: Empiece a especificar qué se va a sustituir^\(.\): captura el primer personaje del Grupo 1.*:, asegúrese de que el resto de la línea estará en la sustitución/: comience a especificar el reemplazo\1: insertar Grupo 1/: El resto se descarta;q: Salgasedpara que no se repita este bloque para otras líneas si las hay.}¡Bueno eso fue divertido!
:)También puede usargrepy etc., pero si está enbashla${x:0:1}magia, es la mejor solución en mi opinión. (Pasé como una hora tratando de usar la expansión de variables POSIX para hacer eso, pero no pude:()fuente
Usando bash 4:
x="test" read -N 1 var <<< "${x}" echo "${var}"fuente