Почему две непрерывные вкладки и EOF в скрипте приводят к выводу файла в текущий каталог? - PullRequest
0 голосов
/ 26 апреля 2018

Обычный и формальный документ в bash-скрипте приведен ниже.

clear-mysql(){
    mysqlword="xxxxx"
    port="22"
    ip="11.22.33.44"
    tmpdb="xxxx"
    ssh -p $port   root@{$ip}  "mysql -u root -p$mysqlword <<EOF
        use ${tmpdb};
        UPDATE xx SET yy = replace(post_content, 'domain', '"http://$ip/wp"');
EOF"
}

И вы можете использовать другой правильный формат (табуляцию и <<-) в этом виде bash.

clear-mysql(){
    mysqlword="xxxxx"
    port="22"
    ip="11.22.33.44"
    tmpdb="xxxx"
    ssh -p $port   root@{$ip}  "mysql -u root -p$mysqlword <<-EOF
        use ${tmpdb};
        UPDATE xx SET yy = replace(post_content, 'domain', '"http://$ip/wp"');
        EOF"
}

Теперь я пишу неправильный формат (две вкладки и <<-) для этого простого фрагмента bash, как показано ниже.

clear-mysql(){
    mysqlword="xxxxx"
    port="22"
    ip="11.22.33.44"
    tmpdb="xxxx"
    ssh -p $port   root@{$ip}  "mysql -u root -p$mysqlword <<-EOF
        use ${tmpdb};
        UPDATE xx SET yy = replace(post_content, 'domain', '"http://$ip/wp"');
                EOF"
}

Скопируйте и вставьте его в терминал.

enter image description here

Я знал, что это неправильный формат, и я знал правильный формат строки в bash.
Что меня смутило, так это почему две вкладкии <<-EOF и EOF приводят к выводу списка всех файлов в текущем каталоге?
Да, две вкладки вызывают автоматическое завершение,

[root@localhost tmp]# 
Display all 1137 possibilities? (y or n)

Вкладка и вкладка будут отображать все 1137 вместо вывода списка файлов втекущий каталог.

enter image description here

...