Shell Script working with multiple files
本问题已经有最佳答案,请猛点这里访问。
我有以下代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | #!/bin/bash filename=$1 file_extension=$( echo $1 | cut -d. -f2 ) directory=${filename%.*} if [[ -z $filename ]]; then echo"You forgot to include the file name, like this:" echo"./convert-pdf.sh my_document.pdf" else if [[ $file_extension = 'pdf' ]]; then [[ ! -d $directory ]] && mkdir $directory convert $filename -density 300 $directory/page_%04d.jpg else echo"ERROR! You must use ONLY PDF files!" fi fi |
而且工作得很好!
我想创建一个脚本,我可以这样做:/script.sh*.pdf
我该怎么做?使用星号。
谢谢你抽出时间来!
首先要认识到shell会将
您可以使用如下结构:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | #!/bin/bash function convert() { local filename=$1 # do your thing here } if (( $# < 1 )); then # give your error message about missing arguments fi while (( $# > 0 )); do convert"$1" shift done |
它首先将您的功能包装在一个名为
顺便说一下,你最初的任务有几个问题:
- 您不能假定文件名有扩展名,您的代码可以与某个目录路径中的点匹配。
- 您的目录分配似乎正在拆分。代替/
- 如果没有给出绝对或相对路径(即只有一个空文件名),则目录分配将包含文件名。
- …
我认为你应该花更多的时间在健壮性上
将代码包装成一个循环。也就是说,不是:
1 2 | filename=$1 : code goes here |
用途:
1 2 3 | for filename in"$@"; do : put your code here done |