首页 > 解决方案 > 如何在 Centos7 中正确回显变量

问题描述

我有一个版本值,我想像这样回显

The file version 1.1 is available

为此,我使用了包含值 1.1 的 $version 变量。但无论出于何种原因,我无法回应这一行。它总是给我结果-

 is available

echo 命令只打印 $version 之后的内容。这些是我尝试过的 echo 命令

echo "The file version" ${version} "is available"
echo "The file version ${version} is available"
echo "The file version $version is available"
echo "The file version" "$version" "is available"
echo "The file version" "${version}" "is available"

echo -n我什至用and命令尝试了同样的printf方法,但它不起作用。我在这里想念什么?

标签: bashecho

解决方案


根据您看到的输出,我相当确定您的$version变量包含回车 ( '\r') 字符。该值正在打印,但在'\r'将光标发送到行首后它被覆盖。

您可以通过键入来验证这一点

printf "%q\n" "$version"

或者

echo "$version" | cat -A

你可能做了类似的事情:

version="$(some_command some_option)"

其中输出使用 Windows 样式的行尾。

避免这种情况的许多方法之一(也许不是最干净的解决方案)是:

version="$(some_command some_option | tr -d '\r')"

推荐阅读