2015-01-30 2 views
0

여러 개의 pnm 이미지 파일을 pnmtojpeg로 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

뭔가 :

#!/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 

것은 당신이 if 블록이 처리되는 인수없이 pnm2jpg을 실행합니다.

pnm2jpg thisfile.pnm을 실행하면 else 블록이 처리됩니다.

+0

감사합니다. 사용자 3439894. 이중 괄호와 '-z'가 무엇인지 설명해 주시겠습니까? – AlanW

+0

하나 또는 두 개의 대괄호로 작성 될 수 있으며 두 개를 사용하는 것을 선호합니다.이 편집기는 내가 사용하는 편집기 (숭고함)의 기본값입니다. [BashFAQ/031] (http://mywiki.wooledge.org/BashFAQ/031) 및 [if 소개] (http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_07_01)를보십시오. .html). 그런 다음 추가 설명이 필요하면 알려주십시오. – user3439894

관련 문제