0

我有这个代码。但我总是得到一个错误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] ;. 我从bash 中的比较整数中得到了这个例子,预计一元运算符 我做错了什么?

4

1 回答 1

3

你需要

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

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

我引用counter是安全的,但如果你确定它永远不会是空的,那么你可以跳过它。然而,安全可能比抱歉更好,并遵循您的原始模式。

于 2012-08-16T09:10:38.930 回答