2017-05-29 20 views
3

このbashismには、組み込みPOSIXの機能はありますか?文字列の最後の文字を確認してください

my_string="Here is a string" 
last_character=${my_string: -1} 

私はこのようなものを見続けていますが、ハックのようです。

last_character=$(echo -n "$my_string" | tail -c 1) 
last_character=$(echo -n "$my_string" | grep -o ".$") 

しかし、おそらくハックはPOSIXシェルのすべてですか?

答えて

4

あなたが本当にはそれをしなければならない場合POSIXのみ:

my_string="Here is a string" 
last_character=${my_string#"${my_string%?}"} 

何それは、本質的に唯一の最後の文字であなたを残して、$my_stringの初めから$my_stringサンセリフその最後の文字を削除していません。

+0

ありがとう、まだハックですが、少なくともパラメータ拡張だけのハックです! – miken32

+0

@ miken32 - 間違いなくハッキングしますが、パイピングに打ち勝ち、他のコマンドを呼びます。それはずっと汎用性がありませんが、それはPOSIXです。 – zwer

0
num=`echo $my_string | wc -c ` 
let num-=1 
last=`echo $my_string | cut -c$num` 
echo $last 

仮定:(最後の文字はここにあります)は、最後の文字が必要な文字列です。これが参考になることを願っています。

+1

入力文字列に改行が含まれていると、これが壊れます。 –

0

最後の文字が何であるかを確認してその値に応じる必要がある場合は、case ... esacの構成は、それを表現するポータブルな方法です。

関連する問題