0

単純なシェル スクリプトを作成して、ローカルの MAMP Web 開発環境内で新しいサイトを簡単に追加/セットアップできるようにしようとしています。次のスクリプトがありますが、VHOSTS.conf ファイルの末尾に追加する必要があるテキストに二重引用符が含まれており、ファイルを書き込もうとするとエラーがスローされます。追加する必要がある文字列に二重引用符が含まれている場合、ファイルの末尾にテキストを追加するにはどうすればよいですか?

clear

echo "Enter the name of the dev site you want to add (ie: mysite.dev): "
read devname
echo "Enter the name of the directory where your site lives (ie: /Volumes/Clients/AIA/Website/Dev/): "
read directory
echo "$directory is what you typed in. Your record will be added"

echo '<VirtualHost *:8888>
ServerName $devname
DocumentRoot "$directory"
<Directory "$direcotry">
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
</VirtualHost>' >> /Applications/MAMP/conf/apache/vhosts.conf

echo ""
echo "Your record has successfully been added for $devname
4

2 に答える 2

1

変数補間は、一重引用符内では機能しません。二重引用符を使用して、文字列内の引用符を でエスケープできます\"

echo "<VirtualHost *:8888>
ServerName $devname
DocumentRoot \"$directory\"
<Directory \"$directory\">
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
</VirtualHost>" >> /Applications/MAMP/conf/apache/vhosts.conf

あるいは、長い複数行の文字列の場合、ヒアドキュメント構文を好むかもしれません。<<TOKEN長い文字列は、最初とTOKEN最後に で区切ることができます。ここで、TOKENは任意の単語です。一重引用符と二重引用符をエスケープせずに自由に使用できます。

ヒアドキュメントはコマンドラインではなく標準入力で渡されるためecho、 をcat.

cat >> /Applications/MAMP/conf/apache/vhosts.conf <<CONF
<VirtualHost *:8888>
ServerName $devname
DocumentRoot "$directory"
<Directory "$directory">
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
</VirtualHost>
CONF
于 2013-09-13T14:30:12.640 に答える