Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String 检查字符串的最后一个字符_String_Bash_Shell_Sh - Fatal编程技术网

String 检查字符串的最后一个字符

String 检查字符串的最后一个字符,string,bash,shell,sh,String,Bash,Shell,Sh,这种巴什主义有内置的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 shells的所有功能就是黑客 num=`echo $my_

这种巴什主义有内置的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 shells的所有功能就是黑客

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

假设:(这里是最后一个字符)是需要最后一个字符的字符串。希望这有帮助。

如果你真的要这么做,只需POSIX即可:

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

它实际上是从
$my_string
的开头删除
$my_string
而不包含其最后一个字符,只剩下最后一个字符。

如果您只需要检查最后一个字符是什么,然后对其值执行操作,则
大小写。。。esac
construct是一种可移植的表达方式。

如果输入字符串包含换行符,则会中断。谢谢,这仍然是一种黑客行为,但至少它是一种仅使用参数扩展的黑客行为@miken32-绝对是黑客风格,但比管道和调用其他命令要好。虽然它的通用性要差得多,但这是POSIX为您准备的。