比较bash中的变量和整数

时间:2012-08-16 09:05:02

标签: bash ubuntu conditional-statements

我有这个代码。但我总是收到错误line 34: [24: command not found

只要do while循环执行24次,它就应该在if语句中执行代码。

#!/bin/bash

input="./user.cvs"

latexStart="\\documentclass[12pt]{article}\\usepackage{labels}\\usepackage{graphicx}\\usepackage{array}\\begin{document}\\graphicspath{{./QRcodes/}}\\newcolumntype{C}{>{\\centering\\arraybackslash} m{27mm} }"

latexEnd="\\end{document}"

latexBeginLabels="\\begin{labels}"

latexEndLabels="\\end{labels}"

counter=0

touch newLabels.txt

echo "$latexStart" >> newLabels.txt

echo "$latexBeginLabels" >> newLabels.txt

while IFS=';' read -r f1 f2 f3 f4 f5 f6 f7 f8 f9 f10 f11 f12 f13
do

path="./QRcodes/$f2$f3.png"

vcard="BEGIN:VCARD%0AN;CHARSET=utf-8:$f3;$f2;;$f1;%0AADR;CHARSET=utf-8;INTL;PARCEL;WORK:;;$f10;$f11;;$f12;$f13%0AEMAIL;INTERNET:$f6%0AORG:$f4%0ATEL;WORK:$f8%0ATEL;FAX;WORK:$f9%0ATITLE:$f5%0AURL;WORK:$f7%0AEND:VCARD"

encodedVCard=$(echo "$vcard" | sed -e 's/\+/\%2B/g')

url="http://api.qrserver.com/v1/create-qr-code/?size=300x300&data=$encodedVCard"

wget -O "$path" "$url"

if ["${counter:-0}" -gt 21] ;
    then
        counter=0
        echo "$latexEndLabels" >> newLabels.txt
        echo "\\newpage" >> newLabels.txt
        echo "$latexBeginLabels" >> newLabels.txt
fi

echo "\\begin{tabular}{ C C } \\includegraphics[height=30mm]{name.png} & Name Man \\\\ \\end{tabular}" >> newLabels.txt

let counter=counter+1

done < "$input"

echo "$latexEndLabels" >> newLabels.txt
echo "$latexEnd" >> newLabels.txt

错误在第34行,if ["${counter:-0}" -gt 21] ;。我从Compare integer in bash, unary operator expected得到了这个例子 我做错了什么?

1 个答案:

答案 0 :(得分:3)

你需要

if [ "${counter:-0}" -gt 21 ]; then ...

即。您的条件语句与周围的方括号之间用空格分隔。

我引用counter是安全的,但是如果你确定它永远不会是空的那么你可以跳过它。然而,最好是safe than sorry,并遵循原始模式。