我正在编写一个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
。
这条线有什么问题?
答案 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]}