하지만 서로 다른 프로그램을 쓸 수 있는 스크립트입니다 데릭쉐퍼드와 내 인수만 I& # 39 m, 새로운 시작 내주었다. I start my 프로그램을 통해:
'./MyProgram.exe Data/data1.txt [Logs/data1_Log.txt]'.
다음은 의사코드 뭐하러요 I want to do.
for each filename in /Data do
for int i = 0, i = 3, i++
./MyProgram.exe Data/filename.txt Logs/filename_Log{i}.txt
end for
end for
그래서 정말 어찌할 바를 모르는 I& # 39 m 의 첫 번째, 두 번째 인수의 작성하는방법에 도왔으매 마치 내 프로그램였어 dataABCD_Log1.txt 및 시작
처음 몇 노트: '정말' /Data/data1.txt 인수로 Data/data1.txt 사용할 때 ',' 할 수 있는 대표적인 슬래시 (slash)? 또한, 바깥 고리 스캑 .txt 파일, 또는 모든 파일에 대해서만 합니다 / 데이터? # 39 의 경우 '와' /Data/data1.txt here& 답을 .txt 파일 제공용:
#!/bin/bash
for filename in /Data/*.txt; do
for ((i=0; i<=3; i++)); do
./MyProgram.exe "$filename" "Logs/$(basename "$filename" .txt)_Log$i.txt"
done
done
유라유라테이코쿠:
'-' 에 대한 확장됨 /Data/.txt 텍스트 파일 경로를 / 데이터 ( 촌극 (/ Data/ 등 부품)
'와' 대신 '/Data/file.txt Data/file.txt 미프로그램 실행하는 데 필요한 경우', ',' 를 사용하여, $ {} " 분리하십시오 " 파일_이름 # / 선행 슬래시 (/). 반면 it& # 39 의 경우 데이터 '정말' 아닌 '/ 데이터' 에서 ',' 에 대해 파일_이름 Data/*.txt 운영까지도 스캔하려면 됩니다.
그러나 이 사건은 네크로맨스링 반복할 때마다 스레드할 it& # 39 의 경우, 파일 (글 로빙 좋습니다 모퉁이점으로 예방할 수 있는 글롭 일치하지 않습니다 (확산될 수 있는 루프 변수를 문자열 (un 일치) 글롭 패턴 자체가).
예를 들면 다음과 같습니다.
for filename in Data/*.txt; do
[ -e "$filename" ] || continue
# ... rest of the loop body
done
참조: [Bash 특히] (http://mywiki.wooledge.org/BashPitfalls # 57 호선)
for file in Data/*.txt
do
for ((i = 0; i < 3; i++))
do
name=${file##*/}
base=${name%.txt}
./MyProgram.exe "$file" Logs/"${base}_Log$i.txt"
done
done
파일 이름 = $ {} '이' # */ 대체 ([쉘로 매개변수입니다 개확장] (http://www.gnu.org/software/bash/manual/bash.html # 쉘로 매개변수입니다 개확장) 최고의 경로명입니다 절감뿐만 최대 마지막 '/'.
기본 = $ {} '대체' 이 'name%.txt 절감뿐만 뒤에 .txt'. # 39 의 경우 난이도 확장명은 it& 조금 다를 수 있습니다.
Aspt nulll 분판된 출력입니다 옵션과 함께 읽기 반복할 디렉토리 구조는 안전하게 사용할 수 있습니다.
#!/bin/bash
find . -type f -print0 | while IFS= read -r -d $'\0' file;
do echo "$file" ;
done
그래서 케이스
#!/bin/bash
find . -maxdepth 1 -type f -print0 | while IFS= read -r -d $'\0' file; do
for ((i=0; i<=3; i++)); do
./MyProgram.exe "$file" 'Logs/'"`basename "$file"`""$i"'.txt'
done
done
또한
#!/bin/bash
while IFS= read -r -d $'\0' file; do
for ((i=0; i<=3; i++)); do
./MyProgram.exe "$file" 'Logs/'"`basename "$file"`""$i"'.txt'
done
done < <(find . -maxdepth 1 -type f -print0)
while 루프 (process) 는 현재 범위를 실행하십시오 스크립트입니다 찾을 수 있으며 출력물에는 필요에 따라 사용할 수 있는 변수 설정
[/home/$] for filename in /Data/*.txt; do for i in {0..3}; do ./MyProgam.exe Data/filenameLogs/$filename_log$i.txt; done done
또는 배시
#!/bin/bash
for filename in /Data/*.txt;
do
for i in {0..3};
do ./MyProgam.exe Data/filename.txt Logs/$filename_log$i.txt;
done
done