无法从字符串中获取最后一个字符

无法从字符串中获取最后一个字符

我是 bash 和 Linux 的新手,不确定为什么我选择的行的最后一个字符在不为空时却没有显示为空。在我的代码中,我正在测试倒数第二行的最后一个字符==“”,如果是这样,我想回显“是”,否则回显“否”。

这是我的代码

Line=$(tail -n-2 file | head -n1)
echo "$Line"
echo "${Line: -1}"
if [ "${Line: -1}" == " " ]; then
    echo "yes";
else
    echo "no";
fi

该文件包括:

xxxxxxxxxxxx
xx x x xxx x
xxx xx xxx x
x x xxx xx .
xxxxxxxxxxxx

其输出是:

x x xxx xx .

yes

我不知道为什么当我这样做时echo "${Line: -1}"输出是空的,但当我这样做时输出是预期的echo "$Line"

有什么建议我可以解决这个问题,谢谢

答案1

文件末尾必须有空格,否则不会打印空白字符,并且条件不会导致打印“yes”。

cat -ve <file>

或者正如其他人所写的

sed -n l <file>

如果您想“清理”(即去除空格),我建议创建一个单独的函数并处理您的输入。

相关内容