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#?}"}"

在某些 shell 中(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是字符串中我们要开始提取数据的从零开始的位置,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

相关内容