bash를 처음 접한 것이므로 도움을 주시면 대단히 감사하겠습니다. 다음을 수행하는 스크립트를 찾고 있습니다. 매우 간단한 스크립트이지만 얻을 수 없는 것 같습니다.
- 반환되는 명령을 실행하고 싶습니다.성공적인또는 출력의 다른 문자열.
- 출력되는 경우확실히단어가 포함되어 있습니다성공적인5분 동안 잠자기 상태로 두고 다음 내용이 포함될 때까지 다시 실행하고 싶습니다.성공적인.
그것은 이렇게 보인다
until (SOMECOMMAND) &> /dev/null
do
if(SOMECOMMAND contains successful);
break;
else sleep 300
done
echo -e "\nThe command was successful."
답변1
다음을 수행할 수 있습니다.
#!/bin/bash
output=
count=0
until [[ $output =~ successful ]]; do
output=$(somecommand 2>&1)
((count++))
sleep 300
done
printf '\n%s\n' "Command completed successfully after $count attempts."
출력 여부를 확인합니다.포함하다성공, 출력이 다음과 같은지 확인하려는 경우정확히"성공" =~
으로 변경할 ==
.
$( ... )
예명령 대체output
매개변수를 출력에 설정하는 데 사용됩니다 somecommand
.
답변2
stdout에 "successful"이라는 문자열이 인쇄될 때까지 some-command를 실행하고, 실패하면 5분 동안 휴면 상태로 둡니다.
until some-command | grep -q successful
do
sleep $((60 * 5)) ### or "sleep 5m", if supported by your version of sleep
done