awk:意外令牌附近的语法错误`(''

ors*_*iro 4 bash awk

我试图将awk命令的输出分配给变量:

USERS=$(awk '/\/X/ {print $1}' <(w))

此行是以下脚本的一部分:

#!/bin/sh

INTERFACE=$1 # The interface which is brought up or down
STATUS=$2 # The new state of the interface

case "$STATUS" in
    up) # $INTERFACE is up

        if pidof dropbox; then
          killall dropbox
        fi

        USERS=$(awk '/\/X/ {print $1}' <(w))

        for user in $USERS; do
            su -c "DISPLAY=$(awk '/\/X/ {print $11}' <(w)) dropboxd &" $user
        done
        ;;
    down) # $INTERFACE is down
        ;;
esac
Run Code Online (Sandbox Code Playgroud)

但是,我收到以下错误:

script: command substitution: line 14: syntax error near unexpected token `('
script: command substitution: line 14: `awk '/\/X/ {print $1}' <(w))'
Run Code Online (Sandbox Code Playgroud)

所有括号均已关闭.语法错误在哪里?

Chr*_*our 6

我假设因为你正在使用#!/bin/sh而不是#!/bin/bash那个进程替换不可用(或者你有一个不支持进程替换的bash版本,在4.XX之前).切换到bash或只是管道w到您的awk命令:

USERS=$(w | awk '/\/X/ {print $1}')
Run Code Online (Sandbox Code Playgroud)