$word
때때로 단어 또는 문장 인 Bash 변수 가 있습니다. 예 :
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�
하는이 I 추측 또 다른 문제, 그래서.
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
등하지만 당신이 있다면 마술 (magick) 여전히 IMO 더 나은 솔루션입니다. (나는 POSIX 변수 확장을 사용하려고 한 시간을 보냈지 만 할 수 없었습니다 )bash
${x:0:1}
:(
-c
POSIX 헤드 에는 옵션 이 없습니다 : < unix.com/man-page/posix/1/head >.