エイリアス値には特殊文字が含まれているため、引用符で囲む必要があります。これを試して:
alias p4client "echo "\`"p4 info | perl -ne 's/Client name: (.*)'\"\$"'/print '\"\$"'1/e'"\`
そしてなんてこった、cshは世界で最悪のシェルです。その引用規則はひどいものです。私はこれを考え出そうとして頭を溶かしましたが、今はそれを説明するエネルギーが残っていません. 動脈瘤がある間はすみません。
編集 1:見よ、あなたの貴重なドル記号$
がこの怪物に姿を変えた!'\"\$"'
編集 2: OK、回復し始めています。最愛のバッシュの甘い抱擁で過ごすたびに、私の力は戻ってきます。消えろ、csh、野獣野郎!
これがとても醜い理由は、全体を二重にエスケープしなければならないからです。1 つはドル記号を perl に渡すためで、もう 1 つはエイリアス ステートメントを安全に通過させるためです。それが役立つ場合、目標はエイリアスを次のようにすることです。
% alias
4client echo `p4 info | perl -ne 's/Client name: (.*)'\$'/print '\$'1/e'`
シーケンスが存在する理由'\$'
は、csh には二重引用符内のドル記号をエスケープする方法がないためです。バックスラッシュを前に置くことはできません。実際には、引用符を一時的に閉じ、引用符の\$
外で使用してから、引用符を再度開く必要があります。