출력이 많은 간단한 스크립트가 있습니다.
#!/bin/bash
{
apt-get update && apt-get upgrade
} 2>&1
./script.sh >/dev/null 2>&1
음소거하여 시작하세요.
내부에서 스크립트를 무음으로 설정할 수 있나요?
답변1
스크립트에 리디렉션을 추가할 수 있습니다.
--편집자--Jeff Schaller의 논평 후
#!/bin/bash
# case 1: if you want to hide all message even errors
{
apt-get update && apt-get upgrade
} > /dev/null 2>&1
#!/bin/bash
# case 2: if you want to hide all messages but errors
{
apt-get update && apt-get upgrade
} > /dev/null
답변2
이것이 bash
내장 명령 exec
의 목적입니다(다른 작업도 수행할 수 있지만).
man bash
CentOS 6.6 상자 에서 발췌 :
exec [-cl] [-a name] [command [arguments]]
...
If command is not specified, any redirections take effect in the
current shell, and the return status is 0. If there is a
redirection error, the return status is 1.
따라서 당신이 찾고 있는 것은 옵션을 전달할 때만 exec >/dev/null 2>&1
래퍼를 사용하여 스크립트를 침묵시킬 수 있습니다 .getopts
-q
#!/bin/bash
getopts :q opt
case $opt in
q)
exec >/dev/null 2>&1
;;
esac
shift "$((OPTIND-1))"
포장지는 필요하지 않지만 getopts
있으면 좋을 것 같습니다. 그럼에도 불구하고 이는 전체 스크립트를 중괄호로 묶는 것보다 훨씬 깔끔합니다. exec
다음을 사용하여 출력을 로그 파일에 추가 할 수도 있습니다 .
exec 2>>/var/myscript_errors.log
exec >>/var/myscript_output.log
당신은 이해했습니다. 매우 편리한 도구입니다.