Shell脚本:迭代时连接字符串

时间:2012-02-15 10:00:44

标签: bash shell

我正在编写一个shell脚本,它遍历目录内容并搜索pdf文件并创建一个字符串,列出其中的所有pdf文件,例如“pdffile1.pdf pdffile2.pdf pdffile3.pdf”。

pdffiles=""

#get files in pdf directory
for filename in $1/*; do
    fn=$(basename "$filename")
    #check if file exist
    if [ -f "$filename" ]; then
        #grab only pdf files
        if [ ${filename: -4} == ".pdf" ]; then
            pdffiles = $filename $pdffiles
        fi
    fi
done

问题是这个代码pdffiles = $filename $pdffiles是错误的,shell脚本输出后面会出现错误消息./mergepdfs.sh: line 39: pdffiles: command not found。 这条线有什么问题?

3 个答案:

答案 0 :(得分:4)

不要在' ='周围使用空格。分配时:

x = 1 # execution of x with arguments '=' and '1'
x=1   # setting shell variable x

答案 1 :(得分:2)

我认为你不需要空间=。这必须是正确的一行:

pdffiles=$filename' '$pdffiles

答案 2 :(得分:2)

为什么不简单:

pdffiles=$1/*.pdf

如果您想以阵列形式获取它们:

pdffiles=($1/*.pdf)

全部输出:

 echo ${pdffiles[*]}

输出尺寸:

 echo ${#pdffiles[*]}

输出单个名称:

 echo ${pdffiles[4]}