スタックオーバーフロー回答3.5K以上のテーブルを取得した人は、この1行を使用してDIR
現在のbashスクリプトのディレクトリを割り当てました。
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
入れ子になった二重引用符が混乱しています。私が知っている限り、次のスニペットは二重引用符で囲まれています。
"$( cd "
"${BASH_SOURCE[0]}"
" && pwd )"
=
...(つまりand)$( dirname
右側の他のすべての項目は)
引用されません。つまり、2番目、4番目、6番目の"
文字がそれぞれ1番目、3番目、5番目の"
文字を「閉じる」と仮定します。
二重引用符が何であるかを理解します"${BASH_SOURCE[0]}"
。しかし、他の2組の二重引用符の目的は何ですか?
一方、高い投票にもかかわらず、上記のコードが間違っている場合、名目上の意図を達成する正しい方法は何ですか?
(通過名目上の意図pwd
私の言葉は、最初の-ingによって返された値をcd
返されたディレクトリにdirname "${BASH_SOURCE[0]}"
集め、サブシェルで-ingを実行して親シェルが変更されないようにするcd
ことです。$PWD
ベストアンサー1
と入力すると、$(...)
最初から引用が始まります。
つまり"..."
、$(...)
巣お互いの中。コマンド置換には$(...)
1つ以上を含めることができます。十分二重引用符で囲まれた文字列。さらに、二重引用符で囲まれた文字列には、1つ以上の文字列を含めることができます。十分コマンドの置き換え。 しかし、彼らは互いに絡み合っていません。 したがって、コマンド置換内で始まる二重引用符文字列は、コマンド置換の外部には拡張されず、その逆も同様です。
したがって、次の点を考慮してください。
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
中に含まれる内容物は$(...)
次のとおりです。
dirname "${BASH_SOURCE[0]}"
上には${BASH_SOURCE[0]}
二重引用符があります。外部二重引用符または一重引用符は二重引用符であるかどうか$(...)
を判断する際には${BASH_SOURCE[0]}
関係ありません。
外層には以下が$(...)
含まれます。
cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd
ここでは、式を$( dirname "${BASH_SOURCE[0]}" )
二重引用符で囲みます。$(...)
外部に引用文があるという事実は、内部の内容を考慮すると関係がありません。内部に引用符があるという事実$(...)
も不適切です。