Cat EOF shell脚本无法按预期工作?
问题描述:
我想写一个shell脚本,使用猫<> somefilepath /文件Cat EOF shell脚本无法按预期工作?
将一些信息追加到文件的末尾。
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
答
此错误开始移动从Ubuntu的14.04某些脚本时16.04展示了我。也许bash的行为有所改变。
将脚本更改为使用#!/bin/sh
而不是#!/bin/bash
后,“cat <<EOF>file
”再次起作用。
heredoc标记'EOF'的结尾不应该缩进 - 它应该从第1列开始,不应该有任何尾随空格。看起来你已经缩进了,这就是它被忽略的原因。 – codeforester
请注意,如果你想缩进EOF,你可以这样做,如果你使用'cat
您是否已将#/ bin/sh放在shell脚本的第一行? – pelya