echo "#!/bin/bash\nls -l /home/" > /home/myscript.sh
bash: !/bin/bash\nls: event not found我的剧本应该是:
#!/bin/bash
ls -l /home/为什么它忽略回显"“字符串而认为存在某种事件?为什么它不承认#!/bin/bash是一个特殊的词?
同样的事情发生在我
echo "#!/bin/bash" > /home/myscript.sh所以这不是新的台词!
echo -e "#\!/bin/bash" > /home/myscript.sh将文件内容写入如下:
#\!/bin/bash为什么这个简单的行动是可悲的错呢?
发布于 2022-08-04 18:58:55
echo -e '#!/bin/bash\nls -l /home/' > /home/myscript.sh
一个组合的-e和使用单引号修正了它。
发布于 2022-08-04 18:51:10
来自bash手册:
双引号中的
包围字符保留引号中所有字符的文字值,但$除外,‘,\,以及在启用历史扩展时,!。
所以要么使用单引号,要么用set +o history禁用历史扩展。
但不要使用echo。相反,请做:
printf '%s\n' '#!/bin/bash' 'ls -l /home/' > /home/myscript或
cat > /home/myscript << 'EOF'
#!/bin/bash
ls -l /home/
EOFhttps://stackoverflow.com/questions/73240922
复制相似问题