我有一堆以唯一编号开头的pdf文件。每个数字代表一个用户。现在我试图将每个用户的所有PDF文件连接成一个“AllInOne”文件。但是当我尝试运行我的bash脚本时,它不能识别pdftk命令中的通配符。bash脚本迭代中的通配符错误 - Shell
每个用户都会有一组被命名为这样的PDF文件:
1019-APP-CV-01.pdf
1019-APP-SOI-01.pdf
1019-APP-EC-01.pdf
1019-APP-TOR-01.pdf
1019-APP-TOR-02.pdf
1019-ADM-LOR1-01.pdf
1019-ADM-LOR2-01.pdf
我试图运行这个bash脚本:
# Script for concat all pdf files of an array of applicants to one file.
#!/bin/sh
cd FILES
array=(1019 1041 1042 1043 1044 1049 1063 1070 1073 1074 1075 1077 1078 1079 1094 1105 1111 1115 1120 1122 1124 1137 1138 1141 1143 $
for i in "${array[@]}"
do
pdftk $i-*.pdf cat output $i-AllInOne.pdf;
done
而且我已经得到了这些消息为所有用户。 错误消息:
Errors encountered. No output created.
Done. Input errors, so no output created.
Error: Failed to open PDF file:
1318-*.pdf
Errors encountered. No output created.
Done. Input errors, so no output created.
Error: Failed to open PDF file:
1319-*.pdf
Errors encountered. No output created.
Done. Input errors, so no output created.
是不是有什么毛病我通配符在bash脚本?
将#!/ bin/sh放在文件的第三行是毫无意义的。只有当它出现在第一行的第一列时才使用shebang。 (即'#!'必须是文件的前两个字节。) – 2012-03-21 20:20:55
注意。但为什么脚本仍然工作,当我'$ bash foobar.sh' ?? – alvas 2012-03-21 20:32:03
因为您正在指定解释器而不是要求操作系统确定解释器。另外/ bin/sh不理解数组,这是bash特有的。 – 2012-03-21 21:44:38