我正在尝试创建一个安装后脚本,它本身创建一个bash脚本(startapp脚本)。这是原始的启动脚本:
#!/bin/bash
if [ `wmctrl -l | grep -c "$2"` != 0 ]
then wmctrl -a "$2"
else $1 &
fi这是我的后安装程序脚本
#!/bin/sh
# CONFIGURE Teamviewer startup link
sudo echo -e "#!/bin/bash\nif [ `wmctrl -l | grep -c "$2"` != 0 ]\nthen wmctrl -a "$2"\nelse $1 &\nfi" > /usr/local/bin/startapp
# Activate script
sudo chmod +x /usr/local/bin/startapp但是,当我用sudo nano /usr/local/bin/startapp检查这个脚本时,我得到了这个奇怪的修改脚本:
#!/bin/bash
if [ 6 != 0 ]
then wmctrl -a
else &
fi你能告诉我为什么系统会自动修改它吗?
发布于 2020-06-11 18:45:27
使用此处文档
#!/bin/sh
cat <<'EOF' | sudo tee /usr/local/bin/startapp
#!/bin/bash
if [ `wmctrl -l | grep -c "$2"` != 0 ]
then wmctrl -a "$2"
else $1 &
fi
EOF在分隔符中使用引号(包括反斜杠\EOF)可以防止调用shell过早地扩展替换。
发布于 2020-06-11 18:48:43
您需要转义回退,因为它们在引用的字符串中不受限制,因此被执行。
https://askubuntu.com/questions/1249356
复制相似问题