在 bash 脚本中回显将“--md5”更改为“?-md5”

Posted

技术标签:

【中文标题】在 bash 脚本中回显将“--md5”更改为“?-md5”【英文标题】:echo in a bash script changing '--md5' to '?-md5' 【发布时间】:2010-12-05 23:17:12 【问题描述】:

我正在编写一个 VMWare ESX 自动构建脚本,但我遇到了最后一道障碍,可能是因为我真的不擅长编写脚本。

我需要保护 Grub,所以在我的脚本中我有一个类似的说法;

echo "password --md5 password-converted-to-md5" >> /boot/grub/grub.conf

不幸的是,这会将以下内容放入此文件中;

密码 ?-md5 密码转换为 md5

我知道这对你们中的一些人来说很简单,但我已经在谷歌上搜索了几个小时,我感到很沮丧。

非常感谢您。

【问题讨论】:

你确定“--md5”中的两个破折号都是简单的ASCII减号字符(U+002D)吗?您可能不小心使用了 U+2010 HYPEN "-"、U+2011 NON-BREAKING HYPEN "-" 或任何其他类似字符。尝试删除两个破折号并重新输入。 (注意:在使用简单文本编辑器之外的任何东西编写脚本时,这种错误相对常见,MS Word 和类似工具因在自然语言文本中进行那种有意义的替换而臭名昭著,但乱码) 我使用的是 MS 记事本,但现在将使用 nano/vi 进行检查 - 谢谢。 【参考方案1】:

确保您有简单的 ascii 破折号,而不是其他字符,如不间断连字符、数学减号、短划线、短划线等。最好是重新输入您的行,这有望解决您的问题问题

【讨论】:

你是对的,谢谢 - 我使用 MS 记事本编写脚本,由于某种原因,第一个连字符在记事本中显示良好,但在 nano 中显示为重音“u” - 可爱的旧 MS 嗯!再次感谢伙计们。【参考方案2】:

我会使用简单的报价,看看是否有帮助:

echo 'password --md5 password-converted-to-md5' >> /boot/grub/grub.conf

或使用变量:

echo $passwordVar' --md5 password-converted-to-md5' >> /boot/grub/grub.conf

【讨论】:

以上是关于在 bash 脚本中回显将“--md5”更改为“?-md5”的主要内容,如果未能解决你的问题,请参考以下文章

如何在bash中回显包含未转义的美元符号的变量

无法在终端“bash:/etc/odbcinst.ini:权限被拒绝”中回显[重复]

在批处理脚本中回显到多个文件

从 Windows 批处理 (.bat) 脚本中回显带有 Unix 行尾的文本

如何在批处理文件中回显换行符?

如何在'echo'中回显wordpress值