数値から最初の数字を取得するにはどうすればよいですか?たとえば、25-25から「2」のみを取得します。
これは私が試したものです:
echo -n "Enter age: "
read age
echo $(s:0:1)
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
s
の代わりに誤った変数age
を使用しており、パラメーターの展開は中括弧${...}
で機能します。
read -p "Enter age: " age
echo "${age:0:1}"
最も基本的でPOSIX互換の方法(符号なしを想定)は次のとおりです。
echo "${age%"${age#?}"}"
一部のシェル(bash、ksh、zsh):
echo "${age:0:1}"
値に符号が含まれる可能性がある場合は、最初にそれを削除します。
$ age=+23
$ age=${age#[+-]}
$ echo "${age%"${age#?}"}"
2
タイトルにbash
と記載されているとおり:
#!/bin/bash
read -p 'Enter a number: '
printf '%.1s\n' "$REPLY"
これprints文字列の最初の文字$REPLY
(read
が読み取ります)。
これを別の変数othervar
に保存するには、次を使用します
printf -v othervar '%.1s' "$REPLY"
他の人が言及しているように、単純な変数置換を使用することもできます。
printf '%s\n' "${REPLY:0:1}"
どこ 0
は、データの引き出しを開始する文字列内のゼロベースの位置であり、1
は、必要な部分文字列の長さです。
${REPLY:0:1}
を別の変数に直接:
othervar=${REPLY:0:1}