![](/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.