私のファイルには特定のタスクを実行するスクリプトがあります。 $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_Complex
Bashは変数名か変数名の一部であるかはわかりません。したがって、常に可能な限り長い名前を使用します。変数名を区切るには、中かっこを使用してください。
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