Der One-Liner-Befehl ist länger, aber dies ist der Teil, der den Fehler auslöst.
for user in natural1 ; do
cat <<EOT >> /home/$user/public_html/.htaccess
<FilesMatch "wp-login.php">
AuthType Basic
AuthName "Secure Area"
AuthUserFile "/home/$user/.htaccesspasswd"
require valid-user
</FilesMatch>
EOT
; done
-bash: syntax error near unexpected token `;'
;
als Zeilenumbruch. Sie können also entweder ein Semikolon zwischen natural1 und do verwenden oder do in die nächste Zeile setzen. Beides wäre eine gültige Syntax. Viele Programmierer verwenden das Semikolon, weil sie es besser finden, die Schleifendeklaration in einer einzelnen Zeile zu enthalten. Aus diesem Grund macht es nie Sinn, eine Zeile mit ;
in bash zu beginnen, an die ich denken kann.
;
in; done
. Bash ist nicht C. Bash ist launisch, wenn Sie unnötig hinzufügen; wo du schon newline hast