![](/img/trans.png)
[英]why single quotes and double quotes works differently in “bash -c”?
[英]Why bash converting double quotes to single quotes?
我编写了一个包含以下代码的简单测试脚本
#!/bin/bash
CHM=test
NAME="user@test"
if ! grep -q test /etc/passwd
then
useradd -s /bin/bash -m -d /home/test -c "${CHM} : ${NAME}" test
fi
但是我在bash将我的“”转换为示例输出时遇到问题
+ CHM=test
+ NAME=user@test
+ grep -q test /etc/passwd
+ useradd -s /bin/bash -m -d /home/test -c 'test : user@test' test
useradd: invalid comment 'test : user@test'
我不知道如何解决此问题,欢迎任何输入,尝试搜索但未产生任何首选结果
操作系统:RHEL6 GNU bash,版本4.1.2(1)-发行版(x86_64-redhat-linux-gnu谢谢
Bash不会转换任何引号,这纯粹是set -x
的输出set -x
。 如您所见, ${VARIABLES}
已在set -x
输出中扩展。 之后,引号类型不再重要,bash维护人员选择在单引号中显示所有包含空格的单词,以使单词边界清晰。
正如codegrep_admin正确确定的那样,实际的问题是无法对/etc/passwd
任何字段使用冒号:
。 例如,您不能有一个名为foo:bar
的用户,也不能有一个注释说test:user@test
,也不能有一个名为ba:sh
的外壳。
/etc/passwd
由:
字符分隔,因此useradd拒绝注释。 尝试删除:
在您的评论中。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.