Bash 如何使用Shell脚本打印字符

Bash 如何使用Shell脚本打印字符,bash,append,config,Bash,Append,Config,下面是我获取机器MAC并存储在配置文件中的脚本 我的问题是,在每一行中都有字符“”,但它不会在文件中打印,如何使用“”写入文件 使用cat和a,您可以使用多行输入而无需转义字符 MAC=$(ifconfig eth0 | grep -o -E '([[:xdigit:]]{1,2}:){5}[[:xdigit:]]{1,2}') cat << EOT > /etc/vmware/view-mandatory-config view.sslVerificationMode = "

下面是我获取机器MAC并存储在配置文件中的脚本

我的问题是,在每一行中都有字符“”,但它不会在文件中打印,如何使用“”写入文件


使用
cat
和a,您可以使用多行输入而无需转义字符

MAC=$(ifconfig eth0 | grep -o -E '([[:xdigit:]]{1,2}:){5}[[:xdigit:]]{1,2}')
cat << EOT > /etc/vmware/view-mandatory-config
view.sslVerificationMode = "3"
view.autoConnectDesktop = "TRUE"
view.autoConnectBroker = "TRUE"
view.kioskLogin = "TRUE"
view.nonInteractive = "TRUE"
view.fullScreen = "TRUE"
view.nomenubar = "TRUE"
view.defaultBroker = "viewcs"
view.defaultUser = "CM-${MAC//:/_}"
EOT
MAC=$(ifconfig eth0 | grep-o-E'([[:xdigit:]{1,2}:){5}[:xdigit:]{1,2}')
cat/etc/vmware/view强制配置
view.sslVerificationMode=“3”
view.autoConnectDesktop=“TRUE”
view.autoConnectBroker=“TRUE”
view.kioskLogin=“TRUE”
view.nonInteractive=“TRUE”
view.fullScreen=“TRUE”
view.nomenubar=“TRUE”
view.defaultBroker=“viewcs”
view.defaultUser=“CM-${MAC/://}”
EOT

cat
将转发由to stdout生成的stdin输入,从而允许重定向到文件

只需在外部双引号内转义双引号,方法是在其前面加一个反斜杠:

MAC=$(ifconfig eth0 | grep -o -E '([[:xdigit:]]{1,2}:){5}[[:xdigit:]]{1,2}')
echo "
view.sslVerificationMode = \"3\"
view.autoConnectDesktop = \"TRUE\"
view.autoConnectBroker = \"TRUE\"
view.kioskLogin = \"TRUE\"
view.nonInteractive = \"TRUE\"
view.fullScreen = \"TRUE\"
view.nomenubar = \"TRUE\"
view.defaultBroker = \"viewcs\"
view.defaultUser = \"CM-${MAC//:/_}\"
" > /etc/vmware/view-mandatory-config

答案的关键不是
cat
,而是使用here文档(在
manbash
中搜索
here文档
)。另外,为了帮助OP,请将
*
实例替换为
,以证明您的方法有效。感谢您提供的信息,我没有完全阅读sed命令,因此我错过了他正在替换
*
sHappy以提供帮助;如果您在答案中添加有关此处文档的信息,请参阅(
cat
只是将here文档生成的stdin输入中继到stdout的辅助工具,因此可以重定向到文件),我很高兴向上投票。它工作得很好,感谢您向我展示here文档,我将深入查看它。感谢您的帮助,它也工作了,这将帮助我很多次。
MAC=$(ifconfig eth0 | grep -o -E '([[:xdigit:]]{1,2}:){5}[[:xdigit:]]{1,2}')
echo "
view.sslVerificationMode = \"3\"
view.autoConnectDesktop = \"TRUE\"
view.autoConnectBroker = \"TRUE\"
view.kioskLogin = \"TRUE\"
view.nonInteractive = \"TRUE\"
view.fullScreen = \"TRUE\"
view.nomenubar = \"TRUE\"
view.defaultBroker = \"viewcs\"
view.defaultUser = \"CM-${MAC//:/_}\"
" > /etc/vmware/view-mandatory-config