たとえば、重複行を削除するエイリアスを作成したいとします。
alias rm.dup 'perl -ne 'print unless $dup{$_}++;''
.cshrcをソーシングすると、「dup:未定義変数」と報告されます。
に変更された場合
alias rm.dup 'perl -ne 'print unless \$dup{$_}++;' \!* &'
「!*&: コマンドが見つかりません。」と報告されます。
そしてまた試した
alias rm.dup 'perl -ne 'print unless \$dup{$_}++;''
報告: ": コマンドが見つかりません。"
エイリアスを持つ変数を使用する一般的な規則は何ですか?
答え1
alias rm.dup 'perl -ne '\''print unless $dup{$_}++'\'' \!* &'
一重引用符の中に一重引用符を挿入できないため、1つの方法は一重引用符を分離し、リテラル引用符を挿入して引用符を再起動することです。
'perl -ne '\''print unless $dup{$_}++'\'' \!* &'
|---------|B |-----------------------|D |------|
A C E
別の方法は次のとおりです。
alias rm.dup 'perl -ne "print unless "\$"dup{"\$"_}++" \!* &'