숫자의 첫 번째 숫자를 얻는 방법은 무엇입니까? 예를 들어 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