私のスクリプトが最初の行の後にループを出る理由を理解できません。 deleteUser関数内で別のスクリプトを呼び出しているため、動作が中断されるようです。
以下は私のスクリプトから抜粋したものです。
[...]
function deleteUser
{
nfsserver="/local/scripts/find_home_in_nfs.sh ${1}"
ssh -n $nfsserver "rm -rf /home/${1}"
ssh ldap "sudo deleteUser ${1}"
userHome ${1}
}
cat myFile | while read line
do
username=`echo ${line} | awk -F" " '{print $1}'`
action=`echo ${line} | awk -F" " '{print $2}'`
if [ "${action}" == "d" ]; then
deleteUser ${username}
elif [ "${action}" == "a" ]; then
addUser ${username}
fi
done
"find_home_in_nfs.sh"(ホームの場所を見つけるためにすべてのNFSサーバーへの多くのSSH接続を実行します)を呼び出さずにスクリプトの単純化されたバージョンを再構築してみましたが、うまくいきました。
ただし、使用する必要がありますが変更できません。 whileループを操作する方法はありますか?
ベストアンサー1
次の例のように、ループを大幅に簡素化できます。
while read username action
do
if [ "${action}" == "d" ]; then
echo "deleteUser ${username}"
elif [ "${action}" == "a" ]; then
echo "addUser ${username}"
fi
done < myFile