2017-08-08 41 views
0

在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第5行執行和輸出加到script2.sh

怎樣纔可以有script2看起來像

#!/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 

沒有被echo執行?

UPDATE

以我目前的代碼時/var/lib/mysql-files/tables.txt不存在我得到tail: cannot open '/var/lib/mysql-files/tables.txt' for reading: No such file or directory

當該文件存在,我得到這樣的

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

echo "table1 
table2 
table3" > /var/lib/mysql-files/tables.txt 

SCRIPT2當在將來執行的,必須進行評估,不是現在寫的時候。

感謝

+0

你可以在執行上面的代碼後顯示script2.sh的樣子。 –

+1

你需要花費$ –

回答

1

你需要對工藝替代景觀的$,使其在當前腳本爲string處理,因此,在執行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 
+0

感謝的人,這解決了這個問題。 – macsig