我试图将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)
所有括号均已关闭.语法错误在哪里?
我假设因为你正在使用#!/bin/sh
而不是#!/bin/bash
那个进程替换不可用(或者你有一个不支持进程替换的bash版本,在4.XX之前).切换到bash
或只是管道w
到您的awk
命令:
USERS=$(w | awk '/\/X/ {print $1}')
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4475 次 |
最近记录: |