如何获取Bashvariables的第一个字母?

我有一个Bashvariables, $word ,有时是一个单词或句子,例如:

 word="tiger" 

要么:

 word="This is a sentence." 

我怎样才能使一个新的Bashvariables,只有在variables中find的第一个字母相等? 例如,以上将是:

 echo $firstletter t 

要么:

 echo $firstletter T 
 initial="$(echo $word | head -c 1)" 

每当你在问题描述中说“第一”, head就是一个可能的解决scheme。

 word="tiger" firstletter=${word:0:1} 
 word=something first=${word::1} 

既然你有一个sed标签这里是一个sed答案:

 echo "$word" | sed -e "{ s/^\(.\).*/\1/ ; q }" 

为那些喜欢那些(我做!)玩的玩:

{

  • s :开始替代例程
    • / :开始指定要replace的内容
    • ^\(.\) :捕获组1中的第一个字符
    • .* :,确保行的其余部分将被replace
    • / :开始指定replace
    • \1 :插入组1
    • / :剩下的被丢弃;
  • q :退出sed这样如果有的话,其他行不会重复这个块。

}

那很好玩! :)你也可以使用grep等,但是如果你在bash ${x:0:1} magick仍然是更好的解决scheme。 (我花了一个小时试图使用POSIXvariables扩展来做到这一点,但不能:(

一个便携的方法是使用参数扩展(这是一个POSIXfunction) :

 word='tiger' first="${word%%"${word#?}"}" 

使用bash 4:

 x="test" read -N 1 var <<< "${x}" echo "${var}"