[
명령은 조건식을 평가하는 것입니다. 여기서는 아무 소용이 없습니다.
umount
표준 출력에서 아무것도 출력하지 않기 때문에 (오류는 stderr로 이동) `sudo umount mount`
아무것도 확장되지 않습니다.
따라서 다음과 같습니다.
while [ ]
do
sleep 0.1
done
[
명령, 옆에 어떤 인수를 전달하지 않을 경우 [
및 ]
반환 거짓 이 루프를 입력하지 않습니다 (0이 아닌 종료 상태), 그래서.
umount
stdout에서 오류를 출력 했더라도 해당 출력의 [
결과 단어가 유효한 조건식을 구성하지 않았기 때문에 명령을 사용하는 것이 의미가 없었습니다.
여기 당신이 원하는 :
until sudo umount mount
do
sleep 0.1
done
즉, [
명령이 아닌 sudo / umount의 종료 상태를 확인하려고합니다 .
umount
stderr에 오류 또는 경고가 출력 되는지 확인하려는 경우 [
유용 할 수있는 곳 입니다. 은 -n "some-string"
에 의해 인식 조건식입니다 [
여부를 테스트 명령 "some-string"
, 비어 있거나하지 뭔가 같은 :
while [ -n "$(sudo umount mount 2>&1 > /dev/null)" ]; do
sleep 0.1
done
그러나 오류 또는 경고 메시지가 있는지 찾는 것은 일반적으로 나쁜 생각입니다. 이 umount
명령은 종료 코드로 성공했는지 여부를 알려주므로 훨씬 안정적입니다. 성공하고 여전히 경고 메시지를 출력 할 수 있습니다. 실패하고 오류가 발생하지 않을 수 있습니다 (예 : 죽었을 때).
이 특정 경우 umount
디렉토리가 마운트되지 않아 실패 할 수 있으며이 경우 영원히 반복되므로 다음과 같은 다른 접근법을 시도 할 수 있습니다.
while mountpoint -q mount && ! sudo umount mount; do
sleep 0.1
done
또는 "마운트"를 여러 번 마운트하여 모두 마운트 해제하려는 경우 :
while mountpoint -q mount; do
sudo umount mount || sleep 0.1
done