如何使用 bash 脚本创建 bash 脚本?

如何使用 bash 脚本创建 bash 脚本?

我正在尝试创建一个安装后脚本,该脚本本身会创建一个 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

你能告诉我为什么系统会自动修改它吗?

答案1

用一个这里的文件

#!/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在分隔符中使用引号(任何类型 - 包括反斜杠)可以防止调用壳牌过早扩大替代。

答案2

您需要转义反引号,因为它们是在引用的字符串内插入的,因此会执行。

相关内容