我有一个 Bash 变量 ,$word
它有时是一个单词或句子,例如:
word="tiger"
或者:
word="This is a sentence."
如何创建一个新的 Bash 变量,该变量仅等于变量中的第一个字母?例如,上面将是:
echo $firstletter
t
或者:
echo $firstletter
T
我有一个 Bash 变量 ,$word
它有时是一个单词或句子,例如:
word="tiger"
或者:
word="This is a sentence."
如何创建一个新的 Bash 变量,该变量仅等于变量中的第一个字母?例如,上面将是:
echo $firstletter
t
或者:
echo $firstletter
T
word="tiger"
firstletter=${word:0:1}
word=something
first=${word::1}
initial="$(echo $word | head -c 1)"
每次您在问题描述中说“第一”时,head
都是一个可能的解决方案。
一种可移植的方法是使用参数扩展(这是 POSIX 功能):
$ word='tiger'
$ echo "${word%"${word#?}"}"
t
带切:
word='tiger'
echo "${word}" | cut -c 1
既然你有一个sed
标签,这是一个sed
答案:
echo "$word" | sed -e "{ s/^\(.\).*/\1/ ; q }"
为那些喜欢这些的人玩玩玩(我愿意!):
{
s
: 开始一个替换例程
/
: 开始指定要替换的内容^\(.\)
:捕获第 1 组中的第一个字符.*
:, 确保该行的其余部分将在替换中/
: 开始指定替换\1
: 插入组 1/
: 其余的被丢弃;
q
:退出sed
,因此如果有其他行,它将不会重复此块。}
那很有趣!:)
您也可以使用grep
等,但如果您使用bash
魔法${x:0:1}
仍然是 imo 更好的解决方案。(我花了大约一个小时试图使用 POSIX 变量扩展来做到这一点,但不能:(
)
使用 bash 4:
x="test"
read -N 1 var <<< "${x}"
echo "${var}"