디렉터리 및 파일에 대한 변수 호출

디렉터리 및 파일에 대한 변수 호출

내 파일에 특정 작업을 수행하는 스크립트가 있습니다. $dir 변수를 스크립트에서 사용할 때 올바른 문자가 무엇인지 모르기 때문에 변수에 문제가 있을 수 있습니다.

for dir in *; do 
      cd $dir; flapwater -lp ../../ligands/"$dir.mol2" ../A2a1071_PEP_REC.pdb "A2a1071_$dirDock_Complex.pdb"; 
      flapwater -w-auto -i "A2a1071_"$dirDock_Complex.pdb" -o "WF_$dir.pdb" -gl ../../ligands/"$dir.mol2" -gr 6 > WF.log; 
      cd .. ; 
done 

예:

변수가 $dir = 4a인 경우 스크립트는 다음과 같아야 합니다.

for dir in *; do 
     cd $dir; flapwater -lp ../../ligands/4a.mol2 ../A2a1071_PEP_REC.pdb A2a1071_4aDock_Complex.pdb; 
     flapwater -w-auto -i A2a1071_4aDock_Complex.pdb -o WF_4a.pdb -gl ../../ligands/4a.mol2 -gr 6 > WF.log; 
     cd .. ; 
done

누군가 $dir의 쓰기 사용법을 설명할 수 있나요?

답변1

$dirDock_ComplexBash는 변수 이름인지 변수 이름의 일부인지 알 수 없습니다 . 따라서 항상 가능한 가장 긴 이름을 사용합니다. 변수 이름을 구분하려면 중괄호를 사용하세요.

cd또한 디렉터리 이름에 공백이 포함된 경우에도 변수를 큰따옴표로 묶을 수 있습니다.

for dir in * ; do
    cd -- "$dir" || continue # Double quotes.
    flapwater -lp ../../ligands/"$dir.mol2" ../A2a1071_PEP_REC.pdb "A2a1071_${dir}Dock_Complex.pdb"  # Curlies.
    flapwater -w-auto -i "A2a1071_${dir}Dock_Complex.pdb" -o "WF_$dir.pdb" -gl "../../ligands/$dir.mol2" -gr 6 > WF.log # curlies
    cd .. || break
done

관련 정보