Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash shell脚本中出现语法错误,表示意外标记`(_Bash_Shell - Fatal编程技术网

Bash shell脚本中出现语法错误,表示意外标记`(

Bash shell脚本中出现语法错误,表示意外标记`(,bash,shell,Bash,Shell,我已经编写了以下shell脚本 while :; do status=$($EMR_BIN/elastic-mapreduce --jobflow $JOBFLOW --list | grep "CopyLogs" | awk '{print $1}') [[ $status == +( *RUNNING*|*PENDING*|*WAITING* ) ]] || break sleep 60 done 它在第3行给了我一个错误,说条件表达式中的语法错误:意外的标记(“”)。我尝试在大括号之间给

我已经编写了以下shell脚本

while :; do
status=$($EMR_BIN/elastic-mapreduce --jobflow $JOBFLOW --list | grep "CopyLogs" | awk '{print $1}')
[[ $status == +( *RUNNING*|*PENDING*|*WAITING* ) ]] || break
sleep 60
done
它在第3行给了我一个错误,说条件表达式中的
语法错误:意外的标记
(“”)。我尝试在大括号之间给空格,但它不起作用


有人能帮我吗。

看起来您正在尝试使用扩展全局搜索。请确保您的脚本前面的某个地方有
shopt-s extglob
,或者重写以使用标准全局搜索

#!/bin/sh
while :; do
    case $($EMR_BIN/elastic-mapreduce --jobflow $JOBFLOW --list | awk '/CopyLogs/{print $1}') in
        *RUNNING*|*PENDING*|*WAITING* ) sleep 60;; 
        *) break;;
    esac
done
由于没有剩余的bashism,这个脚本现在与POSIX
sh
兼容(我个人也认为这样更可读)


(请注意对无用的
grep | awk
的修复)

哦,好的,你的意思是说使用
shopt-x extglob
,对吗?你必须使用“=~”操作符,而不是“==”。