좋은 하루. 필자는 함수를 통해 실행하고 싶었던 일련의 명령을 사용하여 종료 코드를 얻고 그에 따라 콘솔 출력을 수행 할 수있었습니다. 그 말로는 여기에 두 가지 이슈가 있습니다 :Bash 명령 대체 stdout + stderr redirect
1) stderr을/dev/null로 지정할 수 없습니다.
2) 첫 번째 에코 라인은 $ 1이 실행될 때까지 표시되지 않습니다. 하드 드라이브에서 파일을 검색하는 것과 같이 처리하는 데 시간이 걸리는 명령을 실행하기 전에는 눈에 띄지 않습니다. 출력의 모양 때문에 또한,이,이 경우는 분명있다 : 즉
sh-3.2# ./runScript.sh
sh-3.2# com.apple.auditd: Already loaded
sh-3.2# Attempting... Enable Security Auditing ...Success
의 표준 오류가 전에 표시했다 "시도 ... $ 2"여기
이 기능은 내가 노력하고 있어요 사용 :#!/bin/bash
function saveChange {
echo -ne "Attempting... $2"
exec $1
if [ "$?" -ne 0 ]; then
echo -ne " ...Failure\n\r"
else
echo -ne " ...Success\n\r"
fi
}
saveChange "$(launchctl load -w /System/Library/LaunchDaemons/com.apple.auditd.plist)" "Enable Security Auditing"
어떤 도움이나 조언을 부탁드립니다.
안녕 빌, 덕분에 큰 일을했습니다. 실행될 명령 대신에 함수 내에서/dev/null로 리디렉션하려고했습니다. 두 번째 질문에 대한 조언이나 의견이 있습니까? – Taelo
이것을 할 수 있습니다 -'exec $ 1 2/dev/null' – Bill
첫 번째 인수에서 왜'$'합니까? 어떤 이유? 전체 문자열을 스크립트에 전달하려는 경우'launch ....... '를 수행하고'$ 1'이 모든 것을 집어 야합니다. – Bill