/ / bash:バックスラッシュをそのまま維持してファイルをソースする方法 - bash、バックスラッシュ

bash:バックスラッシュをそのまま維持してファイルをソースする方法 - bash、バックスラッシュ

bashスクリプトでは、このような設定ファイルを読んでみたいです:

re=foo.bar

そのファイルをソースした後、$ reはfoo.barです。 私が単にファイルをソースすると、バックスラッシュは失われます。どうすれば設定ファイルの "foo.bar"を引用しなくてもいいですか(できるだけシンプルな設定ファイルを保存しますか?)

回答:

回答№1は1

バックスラッシュを個別に引用する必要があります。 別の バックスラッシュ

re=foo\.bar

または引用符で囲まれた文字列の一部として

re="foo.bar"

回答№2の場合は0

行ごとにそれを読む:

IFS="="
while read -r var val
do
eval "$var="$val""
done < file.conf

回答№3の場合は0

使う read ループする -r そして printf -v

while IFS=$" t" read -r LINE; do
[[ $LINE != #* && $LINE =~ ^[[:alpha:]_][[:alnum:]_]*= ]] || continue
IFS== read -r A B <<< "$LINE"
printf -v "$A" "$B"
done
  • 私たちは最初に行全体を読んで先頭と末尾のスペースを取り除きました。
  • コメントの検出もオプションになる可能性がありますが、行全体のコメントには簡単です。