Cat EOF shell脚本无法正常工作?

时间:2017-04-18 15:50:46

标签: shell delimiter ubuntu-16.04 eof cat

我正在尝试编写一个使用cat<>的shell脚本somefilepath / file

将一些信息附加到文件末尾。

    cat <<EOF>> /etc/mysql/mysql.conf.d/mysqld.cnf
    default_storage_engine = innodb
    innodb_file_per_table = 1
    innodb_file_format = Barracuda
    EOF

    service mysql restart

    echo ""
    echo "" 

    # Create moodle table in mysql 

    echo ------------------------# 
    echo 'Setting up moodle mysql'
    echo ------------------------#
奇怪的是,在运行shell脚本时,它似乎忽略了结束的EOF并将所有内容粘贴到文件中,从而破坏了内容。但是,在服务器上的Sublime和Vi中,它似乎正确识别EOF,但在运行时会中断。如何让服务器正确识别此结束EOF?

我也试过这个,没有运气

    cat <<'EOF'>> somefilepath/file 
    blah 
    blah 
    blah 
    EOF 

1 个答案:

答案 0 :(得分:0)

当将一些脚本从Ubuntu 14.04移动到16.04时,此错误开始出现。也许bash的行为发生了一些变化。

将脚本更改为使用#!/bin/sh而不是#!/bin/bash,&#34; cat <<EOF>file&#34;再次工作。