在多个文件或单个文件上运行命令

时间:2015-01-30 02:37:12

标签: bash shell scripting command

我需要使用pnmtojpeg将几个pnm图像文件转换为jpeg。所以我使用了这个脚本,我将其命名为' pnm2jpg':

for f in *.pnm;
  do pnmtojpeg -quality=85 "$f" > "${f%.pnm}.jpg";
done

这很好用。但是,我想进一步调整它,以便它也可以用于单个文件。

换句话说,如果在命令行中没有指定文件,则处理所有文件。

$ pnm2jpg thisfile.pnm  # Process only this file.

$ pnm2jpg  # Process all pnm files in the current directory.

非常感谢您的见解 - 谢谢。

1 个答案:

答案 0 :(得分:1)

类似的东西:

#!/bin/bash

if [[ -z "$1" ]]; then
    for f in *.pnm; do
        pnmtojpeg -quality=85 "$f" > "${f%.pnm}.jpg"
    done
else
    pnmtojpeg -quality=85 "$1" > "${1%.pnm}.jpg"
fi

如果在没有参数的情况下执行pnm2jpg,则会处理if块。

如果执行pnm2jpg thisfile.pnm,则处理else块。