![$TEXT의 처음 두 문자를 인쇄하고 싶습니다.](https://linux55.com/image/143039/%24TEXT%EC%9D%98%20%EC%B2%98%EC%9D%8C%20%EB%91%90%20%EB%AC%B8%EC%9E%90%EB%A5%BC%20%EC%9D%B8%EC%87%84%ED%95%98%EA%B3%A0%20%EC%8B%B6%EC%8A%B5%EB%8B%88%EB%8B%A4..png)
나는 내가 입력한 텍스트와 그 뒤에 해당 텍스트의 처음 두 문자를 인쇄하는 프로그램을 원합니다. 이를 수행할 수 있는 방법이 있습니까?
#!/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