숫자의 첫 번째 숫자를 얻는 Bash 스크립트 도움말

숫자의 첫 번째 숫자를 얻는 Bash 스크립트 도움말

숫자의 첫 번째 숫자를 얻는 방법은 무엇입니까? 예를 들어 25 - 25에서 "2"만 가져옵니다.

내가 시도한 것은 다음과 같습니다.

echo -n "Enter age: "    
read age    
echo $(s:0:1)

답변1

중괄호를 사용하여 매개변수 확장 s대신 잘못된 변수를 사용하고 있습니다 .age${...}

read -p "Enter age: " age
echo "${age:0:1}"

답변2

가장 기본적이고 POSIX 호환 방법(기호가 없다고 가정)은 다음과 같습니다.

echo "${age%"${age#?}"}"

일부 셸(bash, ksh, zsh)에서는 다음을 수행합니다.

echo "${age:0:1}"

값에 기호가 포함되어 있으면 먼저 기호를 제거하세요.

$ age=+23
$ age=${age#[+-]}
$ echo "${age%"${age#?}"}"
2

답변3

bash제목에서 언급했듯이 :

#!/bin/bash

read -p 'Enter a number: '
printf '%.1s\n' "$REPLY"

이것인쇄문자열의 첫 번째 문자만 $REPLY( 로 읽음 read)

다른 변수에 저장하려면 othervar다음을 사용하십시오 .

printf -v othervar '%.1s' "$REPLY"

다른 사람들이 언급했듯이 간단한 변수 대체를 사용할 수도 있습니다.

printf '%s\n' "${REPLY:0:1}"

여기서 는 0데이터 추출을 시작하려는 문자열에서 0부터 시작하는 위치이고, 1는 원하는 하위 문자열의 길이입니다.

${REPLY:0:1}다른 변수에 직접 할당 할 수 있습니다 .

othervar=${REPLY:0:1}

답변4

POSIX 호환 솔루션:

#!/usr/bin/env sh

printf "Enter age: "
read -r age
echo "$age"  
echo first digit: "$(echo "$age" | cut -c1)"

예:

$ ./script.sh
Enter age: 25
25
first digit: 2

관련 정보