Обычный и формальный документ в 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"
}
Скопируйте и вставьте его в терминал.
Я знал, что это неправильный формат, и я знал правильный формат строки в bash.
Что меня смутило, так это почему две вкладкии <<-EOF
и EOF
приводят к выводу списка всех файлов в текущем каталоге?
Да, две вкладки вызывают автоматическое завершение,
[root@localhost tmp]#
Display all 1137 possibilities? (y or n)
Вкладка и вкладка будут отображать все 1137 вместо вывода списка файлов втекущий каталог.