Bash 将回音写入脚本

Bash 将回音写入脚本,bash,shell,Bash,Shell,在bash脚本中,我需要创建另一个脚本文件,因此我有以下内容 cat >/etc/script2.sh <<EOL #!/bin/bash mysql -e "SHOW TABLES FROM $DATABASE_NAME" > /var/lib/mysql-files/tables.txt echo "$(tail -n +2 /var/lib/mysql-files/tables.txt)" > /var/lib/mysql-files/tables.txt

在bash脚本中,我需要创建另一个脚本文件,因此我有以下内容

cat >/etc/script2.sh <<EOL
#!/bin/bash

mysql -e "SHOW TABLES FROM $DATABASE_NAME" > /var/lib/mysql-files/tables.txt

echo "$(tail -n +2 /var/lib/mysql-files/tables.txt)" > /var/lib/mysql-files/tables.txt
EOL
没有执行
echo

更新

使用当前代码,当
/var/lib/mysql files/tables.txt
不存在时,我得到
tail:无法打开“/var/lib/mysql files/tables.txt”进行读取:没有这样的文件或目录

当文件存在时,我会得到如下结果

mysql -e "SHOW TABLES FROM reaction_production" > /var/lib/mysql-files/tables.txt

echo "table1
table2
table3" > /var/lib/mysql-files/tables.txt
脚本2必须在将来执行时进行评估,而不是现在编写时


谢谢

您需要在进程替换上替换
$
,以便在当前脚本中将其视为
字符串
,从而在执行
script2.sh
时对其进行评估

#!/bin/bash

  cat > /etc/script2.sh << EOF
#!/bin/bash

mysql -e "SHOW TABLES FROM $DATABASE_NAME" > /var/lib/mysql-files/tables.txt

echo "\$(tail -n +2 /var/lib/mysql-files/tables.txt)" > /var/lib/mysql-files/tables.txt
EOF
#/bin/bash
cat>/etc/script2.sh/var/lib/mysql files/tables.txt
echo“\$(tail-n+2/var/lib/mysql files/tables.txt)”>/var/lib/mysql files/tables.txt
EOF

执行上述代码后,能否显示script2.sh的外观。您需要对$
#!/bin/bash

  cat > /etc/script2.sh << EOF
#!/bin/bash

mysql -e "SHOW TABLES FROM $DATABASE_NAME" > /var/lib/mysql-files/tables.txt

echo "\$(tail -n +2 /var/lib/mysql-files/tables.txt)" > /var/lib/mysql-files/tables.txt
EOF