계산 서밋하기 전에 인풋 파일이 잘 준비되었는지 확인하기 위한 스크립트를 짰다.
file1, file2, file3, file4, file5가 모여야 계산이 돌아가기때문에 파일을 특정해주어야했고, 존재하지 않을때 요란한 에러출력이 일어나지 않길 바랬으며, 어떤 파일이 없는지도 알고싶었다.
all_exist () {
local filename
for filename; do
ls $filename > /dev/null 2>&1 && continue
echo -e "$filename dose NOT exist"
error=$(echo "error")
done
return 0
}
all_exist POSCAR INCAR KPOINTS POTCAR run_slurm.sh
[[ -z $error ]] && echo "All files exist"
해당 스크립트를 실행하면 다음과 같다.
$ ls
INCAR KPOINTS POSCAR POT run_slurm.sh
$ if_inputfiles_exist.sh
POTCAR dose NOT exist
모든 파일이 잘 있을 때는 아래와 같은 결과가 나온다.
$ ls
INCAR KPOINTS POSCAR POTCAR run_slurm.sh
$ if_inputfiles_exist.sh
All files exist
파일 유무를 확인하는 방법이야 무궁무진한데.. 나는 이렇게 쓰고 있다.
✅ Shell script를 기초없이 그냥 필요에의해서 배우는중이라 python의 try and exception을 bash로 구현을 어떻게해야할지 모르겠어서 고민이 있었는데 &&continue로 구별짓는 선에서 멈추었다.
✅ 그리고 에러가 하나도 없을 경우도 알고싶어서 error 변수를 만들어서 에러가 있는지없는지만 판별하여 확인을 하였다.
✅ 이 스크립트를 짜면서 에러 문구를 띄지 않게하는 것을 알게됐다. > /dev/null 2>&1
'How many language skills do you have? > Shell' 카테고리의 다른 글
[Shell] if -z option | String 변수가 null 인지 여부 판단 (0) | 2021.09.22 |
---|