如果我的字符串周围没有引号,我似乎无法回显

如果我的字符串周围没有引号,我似乎无法回显

我正在 .sh 脚本中尝试以下形式:

echo 'string' $var >> print.dat

它打印以下内容:

'string' 14.27

这几乎是我想要的,但我需要引号消失。我所需要的只是:

string 14.27

有人知道这里的解决方案吗?我确信这是一个简单的问题,但我四处搜索,但找不到我想要的东西。也许我只是不知道到底要搜索什么。

编辑:

我感谢你们的帮助,但不愿意承认,但我一直在犯一个非常愚蠢的错误。在 print.dat 中,事情一直按照我想要的方式打印,但我使用 sh -x 来查看输出,因此我看到了字符串周围的引号。

答案1

echo 'string' $var >print.dat

这不会显示任何内容,而是string将后面的值$var(可能会经历一些转换,因为没有引用)写入文件print.dat。字符串周围的引号将被删除。

确保您没有echo给任何东西起别名。要绕过任何具有相同名称的别名或 shell 函数,请使用

command echo 'string' $var >print.dat

或使用/bin/echo代替echo.

您还可以使用printf通常比以下更便携的方法echo

printf 'string %s\n' "$var" >print.dat

答案2

此解决方法可以完成这项工作(根据您的 shell 反斜杠反引号 `):

echo 'string' $var | tr -d \' >> print.dat

相关内容