Не может быть понятно, что здесь произошло? Если я поместил X | 9 в lan.db (или любой db в этом каталоге) и запустил следующий код, оператор IF не работает. Это странно! если вы эхом $ LINE, это действительно вытаскивает X | 9 из lan.db (или любой db в этом каталоге) и устанавливает его равным LINE, но он не будет сравнивать.Bash while loop if statment
DBREGEX="^[0-9]|[0-9]$"
shopt -s nullglob
DBARRAY=(databases/*)
i=0
for i in "${!DBARRAY[@]}"; do
cat ${DBARRAY[$i]} | grep -v \# | while read LINE; do
echo "$LINE" (Whats weird is that LINE DOES contain X|9)
if [[ !($LINE =~ $DBREGEX) ]]; then echo "FAIL"; fi
done
done
Если же я просто послал вручную ЛИНИЯ = «X | 9» и тот же код (минус пока) работает отлично. т.е. LINE = X | 9 не выполняется, но LINE = 9 | 9 преуспевает.
DBREGEX="^[0-9]|[0-9]$"
Comment shopt -s nullglob
Comment DBARRAY=(databases/*)
Comment i=0
Comment for i in "${!DBARRAY[@]}"; do
Comment cat ${DBARRAY[$i]} | grep -v \# | while read LINE; do
LINE="X|9"
if [[ !($LINE =~ $DBREGEX) ]]; then echo "FAIL"; fi
Comment done
Comment done
* UPDATE *
UGH сдаюсь
сейчас даже этого не работает ...
DBREGEX="^[0-9]|[0-9]$"
LINE="X|9"
if [[ ! $LINE =~ $DBREGEX ]]; then echo "FAIL"; fi
* UPDATE *
Ok , поэтому он выглядит как я должен бежать |
DBREGEX="^[0-9]\|[0-9]$"
LINE="9|9"
echo "$LINE"
if [[ ! $LINE =~ $DBREGEX ]]; then echo "FAIL"; fi
Это, кажется, хорошо работать снова
Спасибо. Я наконец-то понял. Дал вам кредит. – Atomiklan