if ステートメントでシステムパスを awk と一致させます。

if ステートメントでシステムパスを awk と一致させます。

ファイルシステムがディレクトリツリーにマウントされているかをキャプチャしようとしています。

mount | awk '{ if ( $3 == /mnt/pxe ) print mounted }'

ただし、インストールが存在しても文字列はキャプチャされません。コマンドmount出力は次のとおりです。

/home/olegs/infra/isos/test/archlinux-2020.02.01-x86_64.iso on /mnt/pxe type iso9660 (ro,relatime,nojoliet,check=s,map=n,blocksize=2048)

正規表現の一致も失敗します。

mount | grep pxe | awk '{ if ( $3 ~ /mnt/pxe ) print $3 }' 

矛盾

mount | grep pxe | awk '{ if ( $3 ~ .mnt.pxe ) print $3 }'
awk: cmd. line:1: { if ( $3 ~ .mnt.pxe ) print $3 }
awk: cmd. line:1:             ^ syntax error

mount | grep pxe | awk '{ if ( $3 ~ \/mnt\/pxe ) print $3 }'
awk: cmd. line:1: { if ( $3 ~ \/mnt\/pxe ) print $3 }
awk: cmd. line:1:             ^ backslash not last character on line
awk: cmd. line:1: { if ( $3 ~ \/mnt\/pxe ) print $3 }
awk: cmd. line:1:             ^ syntax error

/mnt/pxeこのフィールドのパスにのみ一致する正しい構文を提案してください$3

ベストアンサー1

ほぼ一致しました。文字列の比較には引用符を使用してください。

mount | awk '{ if ( $3 == "/mnt/pxe" ) print "mounted" }'

「インストール済み」も引用符で囲まれています。

ただし、正規表現を使用するにはスラッシュで始めて終了する必要があります。

mount | awk '{ if ( $3 ~ /.mnt.pxe/ ) print "mounted" }'
mount | awk '{ if ( $3 ~ /\/mnt\/pxe/ ) print "mounted" }'
mount | awk '{ if ( $3 ~ /^\/mnt\/pxe$/ ) print "mounted" }' #For exact match

おすすめ記事