Jestem nowicjuszem w skryptowaniu powłoki. Jaka jest różnica między tymi dwoma poleceniami? Jaki jest pożytek ze znaku dolara?
mdfind $'kMDItemFSName="*iValet\'s*"c'
mdfind 'kMDItemFSName="*iValet\'s*"c'
Jestem nowicjuszem w skryptowaniu powłoki. Jaka jest różnica między tymi dwoma poleceniami? Jaki jest pożytek ze znaku dolara?
mdfind $'kMDItemFSName="*iValet\'s*"c'
mdfind 'kMDItemFSName="*iValet\'s*"c'
Odpowiedzi:
Znak dolara przed ciągiem z pojedynczym cudzysłowem jest po prostu innym typem ciągu, ale pozwala na znaki ucieczki w stylu C, takie jak \n
i \'
.
Został użyty w poleceniu, które wymieniłeś, ponieważ zawiera ucieczkę dla pojedynczego cudzysłowu - normalne ciągi pojedynczych cudzysłowów nie pozwalają każdy ucieka w ogóle, w tym ucieczki '
. Ukośniki odwrotne są interpretowane dosłownie. Więc używając $'…'
uniknął ucieczki podwójnych cudzysłowów i pozwolił, by ciąg miał '
w tym.
Istnieje więcej informacji na temat tego typu cytowania tutaj na Wiki Bash Hackers .