awkコマンドでエイリアスを使用中にエラーが発生しました。

awkコマンドでエイリアスを使用中にエラーが発生しました。

このエイリアスを.zshrcに追加しようとしましたが、エラーが発生しました。 ==、"、&&値をエスケープしようとしましたが、まだ成功していません。何が欠けていますか?

alias broke="ssh -t [email protected] tail -f documents/dir/`date -u +%Y%m%d`.log | awk '$2=="ABC:" && int($5)>=26 || int($5)<=-26'"

ベストアンサー1

  1. dateエイリアスは一重引用符の代わりに二重引用符を使用して定義されているため、コマンドの置き換えを早期に実行しました。限られた、電話する時ではありません。
  2. シェルはawkフィールド参照をシェル位置引数として解釈します。
  3. 拡張しています。エイリアスが定義されている場合;
  4. awk周囲の二重引用符はまったく表示されないため、未設定の変数(空の文字列など)ABC:として解釈され、予期しない場所に引用符のないコロンが続き、エラーが発生する可能性があります。awkABCawk
  5. 追加のアドバイスとして、内部引用規則はより直感的であるため、実際に代わりに$(...)使用する必要があります。`...`

コマンド置換と特殊文字を含むエイリアスを設定するには、単一引用符を使用する必要があります。実際にエイリアスを使用するときは、パラメータ拡張を望まない。置く呼び出される時ではありません。

一重引用符の中に一重引用符を含めることはできませんが、引用符自体は区切り文字ではないため問題ありません。

alias hassinglequotesembedded='echo "It'\''s not really too hard; current date when the alias is executed is $(date)"; echo '"'but the alias was set at $(date)'"

参照タイプについては、Stack Overflowで追加の内容を読むことを強くお勧めします。

おすすめ記事