1

aliasプロセスをキャンセルするための一般的なコマンドを記述しようとしていますが、一重引用符と二重引用符に問題があります。これは私の Bash スクリプト作成の初めての試みであり、少し困惑しています。

lsof -i tcp:80 | awk '$1 == "Google" {print $2}'

これはスタンドアロン コマンドとして機能し、正しい PID を出力します。

問題がありますが、エイリアスとしてフォーマットしようとすると。これが構造であるため、コマンドが最初の一重引用符で停止していることは知っていますが、修正方法がわかりません。

alias test='lsof -i tcp:80 | awk '$1=="Google" {print $2}''
4

3 に答える 3

2

単一引用符内の単一引用符のエスケープ シーケンスはありません。思うように書け\'ない。したがって、2 つのオプションがあります。

  1. 次のように、一重引用符から抜け出し、エスケープされた一重引用符を追加してから、\'元に戻すことができます。

    alias test='lsof -i tcp:80 | awk '\''$1 == "Google" {print $2}'\'
    
  2. 二重引用符を使用できます。次に、文字列内の二重引用符だけでなく、ドル記号もエスケープする必要があります。

    alias test="lsof -i tcp:80 | awk '\$1 == \"Google\" {print \$2}'"
    
于 2013-09-26T12:07:18.320 に答える