windows - Bash 编程 (Cygwin) : Illegal Character ^M

标签 windows bash cygwin bc

<分区>

我的性格有问题。我认为是dos和unix之间的转换问题。

我有一个浮点值变量。 当我用 echo 命令打印它时,我得到:

0.495959

但是当我尝试使用 bc 命令对该值进行操作时(我不确定如何编写 bc 命令)。

echo $mean *1000 |bc

我得到:

(standard_in) 1 : illegal character: ^M

我已经在我的 .sh 文件中使用了 dos2unix 命令。 我认为这是因为我的变量具有 ^M 字符(未使用 echo 命令打印)

我怎样才能消除这个错误?

最佳答案

我手边没有 Cygwin,但在常规的 Bash 中,您可以使用 tr -d 命令去除指定的字符,并且您可以使用 $'... ' 符号在命令行参数中指定奇怪的字符(它就像一个普通的单引号字符串,除了它支持 C/Java/Perl/etc.-like 转义序列)。所以,这:

echo "$mean" * 1000 | tr -d $'\r' | bc

将从 echobc 的途中删除回车符。

你可能真的想运行这个:

mean=$(echo "$mean" | tr -d $'\r')

这将修改 $mean 以去除其中的任何回车符,这样您就不必在以后使用它的命令中担心它。

(尽管将 $mean 设置为开头的代码也值得一看。$mean 是如何以回车结束的,不管怎样?也许你可以解决这个问题。)

关于windows - Bash 编程 (Cygwin) : Illegal Character ^M,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8316649/

相关文章:

c - 未初始化的指针导致核心转储

c - 在 cygwin 中与 gcc 动态链接时 undefined reference

python - 在 Python 3 中安装 Ephem 包

bash - 将 cURL 响应重定向到 POST 的 cURL,但不通过文件

windows批量比较md5sum和md5文件内容

windows - Windows 上的 CallNamedPipe 线程安全吗

windows - 在 Visual Studio 98 中的 Visual Basic 6.0 项目中设置/TSAWARE 的位置

linux - sed 编辑 yaml 文件,其中每个键都有单独的值

windows - 将 %ComSpec% 从 cmd.exe 更改为 bash.exe

c++ - 外壳扩展窗口 : best communication between ContextMenu and IconOverlay?