web-dev-qa-db-ja.com

「:無効な変数名の読み取り:Webサイト」

だから、Apache2に新しいWebサイトを簡単に追加できるUbuntu LAMPサーバーの.shスクリプトを作成しようとしていますが、実行しようとするとエラーが発生します

: bad variable name read: website

いくつかの検索を実行しましたが、必要な答えが見つかりません。エラーの原因となった行と同じ設定に一致する行がスクリプト内にいくつかあります。これがエラーの原因と思われる回線のセットアップです

read -p 'What is the website title (no spaces): ' website

スクリプト全体は次のとおりです。

echo Starting website builder
read -p 'What is the website title (no spaces): ' website
echo Website title saved as $website
echo creating storage folder
mkdir -p /var/www/$website
echo changing file permissions
chown -R $name:$name /var/www/$website
chmod -R 755 /var/www/$website
echo creating test file
echo <html> >> /var/www/$website/index.html
echo <head> >> /var/www/$website/index.html
echo    <title>Success</title> >> /var/www/$website/index.html
echo </head> >> /var/www/$website/index.html
echo <body> >> /var/www/$website/index.html
echo    <h1>$website is operational</h1> >> var/www/$website/index.html
echo </body> >> /var/www/$website/index.html
echo </html> >> /var/www/$website/index.html
clear
cat /var/www/$website/index.html
echo
read -p "press [Enter] to continue"
clear
echo creating $website.conf file
echo <VirtualHost *:80> >> /etc/Apache2/sites-available/$website.conf
read -p 'Enter ServerName: ' ServerName
echo        ServerName $ServerName >> /etc/Apache2/sites-available/$website.conf
read -p 'Enter ServerAlias (domain name): ' ServerAlias
echo        ServerAlias $ServerAlias >> /etc/Apache2/sites-available/$website.conf
read -p 'Enter ServerAdmin: ' ServerAdmin
echo        ServerAdmin $ServerAdmin >> /etc/Apache2/sites-available/$website.conf
echo        DocumentRoot var/www/$website >> /etc/Apache2/sites-available/$website.conf
echo        ErrorLog ${Apache_LOG_DIR}/error.log >> /etc/Apache2/sites-available/$website.conf
echo        CustomLog ${Apache_LOG_DIR}/access.log combined >> /etc/Apache2/sites-available/$website.conf
echo </VirtualHost>
clear
cat /etc/Apache2/sites-available/$website.conf
echo 
read -p "press [Enter] to continue"
clear
echo activating website
a2ensite $website
service Apache2 restart
echo Open a web browser on any pc and visit $ServerAlias. If you have errors make sure the alias and external ip was properly set up on the domainservice you signed up with.
read -p 'Process completed. Press [Enter] to end.'
clear
1
Ian Oberdorf

スクランブルされたエラーメッセージは、Windowsの行末の問題を示しています。次の方法で、ファイルの行末を改行(Unix形式)に変換できます。

sed -i 's/\r$//' /path/to/your/script

または(インストールする必要があるかもしれません dos2unix Install dos2unix 最初):

dos2unix /path/to/your/script

参考文献:

1
dessert