$TEXT의 처음 두 문자를 인쇄하고 싶습니다.

$TEXT의 처음 두 문자를 인쇄하고 싶습니다.

나는 내가 입력한 텍스트와 그 뒤에 해당 텍스트의 처음 두 문자를 인쇄하는 프로그램을 원합니다. 이를 수행할 수 있는 방법이 있습니까?

#!/bin/bash
#
# Get text from user repeatedly
#
echo "Type away..."
while read TEXT
do
    echo You typed $TEXT
    if [ "$TEXT" = "quit" ] || [ "$TEXT" = "q" ] || [ "$TEXT" = "Q" ] || [ "$TEXT" = "QUIT" ]; then
        echo So I quit!
        exit 0
    fi
done

echo "HELP!"

답변1

첫 번째 문자를 어디서 얻을 수 있는지와 같은 표기법을 사용할 수 있습니다${var:0:N}변하기 쉬운변수 이름이고질소원하는 문자 수입니다. 따라서 귀하의 질문에 ${TEXT:0:2}대해서는 TEXT. 예:

TEXT="Some text"
echo "\$TEXT: '$TEXT', first 2 chars: '${TEXT:0:2}'"

산출:

$TEXT: 'Some text', first 2 chars: 'So'  

Linux 문서화 프로젝트라는 챕터가 있습니다."문자열 조작". "하위 문자열 추출" 섹션에 이 표기법에 대한 자세한 내용이 있습니다.

답변2

일반적인 아이디어를 제공하기 위해. 귀하의 경우에는 case... 구성을 사용할 수 있습니다 esac. 여기에 표시된 예

#!/usr/bin/env bash

call_for_help()
{
  echo "Please help!" >&2
}

if (($# < 1)); then
  call_for_help
fi

while read -rp "Type away: " TEXT; 
do
  echo "${TEXT:0:2}"
  case "$TEXT" in
   [qQ] | [Qq]uit)
      echo "You quited"
      exit 1
      ;;
  esac
done

관련 정보