我写了一个简单的测试脚本,其代码如下
#!/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)-release(x86_64-redhat-linux-gnu 感谢
答案 0 :(得分:2)
Bash不会转换任何引号,这纯粹是set -x
的输出工件。如您所见,${VARIABLES}
已在set -x
输出中展开。之后,引用类型不再重要,bash维护者选择在单引号中显示包含空格的所有单词,以使单词边界清晰。
正确识别codegrep_admin时,实际问题是不可能对:
中的任何字段使用冒号/etc/passwd
。例如。您不能拥有名为foo:bar
的用户,并且您无法发表评论test:user@test
,并且您不能拥有名为ba:sh
的shell。
答案 1 :(得分:1)
/etc/passwd
由:
字符分隔,因此useradd拒绝评论。尝试删除评论中的:
。