我有一个 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}"