我有這個代碼 bash 代碼稱為xyz_to_mol:
CARBONS=$(grep -ow "C" $1 | wc -l)
HYDROGENS=$(grep -ow "H" $1 | wc -l)
OXYGENS=$(grep -ow "O" $1 | wc -l)
ATYPES=0
ARRAY=($CARBONS $HYDROGENS $OXYGENS)
for i in "${ARRAY[@]}"
do
if [ $i -gt 0 ]; then
((ATYPES =1))
fi
done
echo "Choose co0, co1 or co2 basis set"
read BASIS_SET
echo "BASIS"
echo "$BASIS_SET"
echo ""
echo ""
echo "Atomtypes="$ATYPES" Generators=0 Integrals=1.00D-15 Angstrom"
echo "Charge=6.0 Atoms="$CARBONS""
grep "C" $1
echo "Charge=1.0 Atoms="$HYDROGENS""
grep "H" $1
if [ $OXYGENS -gt 0 ]; then
echo "Charge=8.0 Atoms="$OXYGENS""
grep "O" $1
fi
這就像我想要的一樣作業,除了一件事:該行"Choose co0, co1 or co2 basis set"不應該寫入輸出檔案,而是作為用戶命令列的指令。所以如果我使用這樣的腳本:
xyz_to_mol ketone.xyz > ketone.mol
用戶應該看到一條指令:"Choose co0, co1 or co2 basis set"。然后他或她應該寫co0,co1或者co2輸出檔案ketone.mol不應該包含該行"Choose co0, co1 or co2 basis set"。我該如何實施?
uj5u.com熱心網友回復:
提示通常寫入標準錯誤,而不是標準輸出。你可以明確地做到這一點:
echo "Choose co0, co1 or co2 basis set" >&2
read BASIS_SET
或隱含的-p選項read:
read -p "Choose co0, co1, or co2 basis set" BASIS_SET
uj5u.com熱心網友回復:
一種替代方法是將檔案名作為引數發送并寫入腳本內的輸出檔案:
echo "BASIS" > $2
echo "$BASIS_SET" >> $2
echo "" >> $2
echo "" >> $2
echo "Atomtypes="$ATYPES" Generators=0 Integrals=1.00D-15 Angstrom" >> $2
echo "Charge=6.0 Atoms="$CARBONS"" >> $2
grep "C" $1 >> $2
echo "Charge=1.0 Atoms="$HYDROGENS"" >> $2
grep "H" $1 >> $2
if [ $OXYGENS -gt 0 ]; then
echo "Charge=8.0 Atoms="$OXYGENS"" >> $2
grep "O" $1 >> $2
fi
并像這樣呼叫腳本:
xyz_to_mol ketone.xyz ketone.mol
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/453365.html
