gpt4 book ai didi

bash -\n 在 Bash 字符串和相等性检查中

转载 作者:行者123 更新时间:2023-11-29 09:11:14 25 4
gpt4 key购买 nike

我有这个:

if [ "$(./bin/ft_putendl_fd_test.bin)" != "NO__\n" ]
then
echo "Error on ft_putendl_fd."
fi

二进制输出:NO__\n,其中 \n 实际上是 ASCII 字符 20,而不仅仅是 \\n.

但是,我总是在 ft_putendl_fd 上遇到 Error.

我已经尝试与 $'NO__\n' 进行比较,但它似乎也不起作用。

我正在使用 Bash 3.2。

最佳答案

请注意序列 "\n" 不会产生换行符。您可以使用 $'\n'(不可移植)或将换行符作为文本嵌入:

myno="NO__"$'\n'
myno="NO__
"

但这不是这里的问题,因为命令替换被定义为删除所有尾随换行符。

这意味着你的测试必须是

[ "$(./bin/ft_putendl_fd_test.bin)" != "NO__" ]

在极少数情况下,删除换行符功能可能会产生歧义(当您需要通过尾随换行符的数量来区分时)。您无法轻易将其关闭,但有可能:

x=$(./bin/ft_putendl_fd_test.bin; echo x)
x=${x%x}

[ "$x" != "NO__
" ]

或者简单地说:

[ "$(./bin/ft_putendl_fd_test.bin; echo x)" != "NO__
x" ]

关于bash -\n 在 Bash 字符串和相等性检查中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20126993/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com