합산
위치 매개변수를 추가하면 이제 상당히 기능적인 스크립트를 작성할 수 있습니다. 간단하고 반복적인 작업의 경우, 위치 매개변수를 사용하면 사용자 인터페이스에 배치할 수 있는 매우 유용한 셸 함수를 작성할 수 있습니다. .bashrc 파일.
W e sys_info_page 프로그램은 더욱 복잡하고 정교해졌습니다. 최근 변경 사항을 강조하여 전체 목록을 보여드립니다.
#! / bin / bash
# sys_info_page: 시스템 정보 페이지를 출력하는 프로그램
프로그램 이름=$(기본 이름 $0)
TITLE="$HOSTNAME에 대한 시스템 정보 보고서" CURRENT_TIME=$(date +"%x %r %Z")
TIMESTAMP="$USER가 $CURRENT_TIME에 생성함"
report_uptime() { cat <<- _EOF_
시스템 가동 시간
$(가동시간)
_EOF_ 리턴
#! / bin / bash
# sys_info_page: 시스템 정보 페이지를 출력하는 프로그램
프로그램 이름=$(기본 이름 $0)
TITLE="$HOSTNAME에 대한 시스템 정보 보고서" CURRENT_TIME=$(date +"%x %r %Z")
TIMESTAMP="$USER가 $CURRENT_TIME에 생성함"
report_uptime() { cat <<- _EOF_
시스템 가동 시간
$(가동시간)
_EOF_ 리턴
}
report_disk_space() { cat <<- _EOF_
디스크 공간 활용도
$(df -h)
_EOF_ 리턴
}
Report_home_space () {
if [[ $(id -u) -eq 0 ]]; 그런 다음 고양이 <<- _EOF_
홈 공간 활용도(모든 사용자)
$(du -sh /home/*)
_EOF_
그렇지 않으면
고양이 <<- _EOF_
집 공간 활용도($USER)
$(du -sh $HOME)
_EOF_
안녕 반환
}
용법 () {
echo "$PROGNAME: 사용법: $PROGNAME [-f 파일 | -i]" return
}
write_html_page() { cat <<- _EOF_
$제목
$제목
$타임스탬프
$(보고서_가동시간)
$(보고서_디스크_공간)
$(리포트_홈_스페이스)
_EOF_ 리턴
}
# 프로세스 명령줄 옵션
}
report_disk_space() { cat <<- _EOF_
디스크 공간 활용도
$(df -h)
_EOF_ 리턴
}
Report_home_space () {
if [[ $(id -u) -eq 0 ]]; 그런 다음 고양이 <<- _EOF_
홈 공간 활용도(모든 사용자)
$(du -sh /home/*)
_EOF_
그렇지 않으면
고양이 <<- _EOF_
집 공간 활용도($USER)
$(du -sh $HOME)
_EOF_
안녕 반환
}
용법 () {
echo "$PROGNAME: 사용법: $PROGNAME [-f 파일 | -i]" return
}
write_html_page() { cat <<- _EOF_
$제목
$제목
$타임스탬프
$(보고서_가동시간)
$(보고서_디스크_공간)
$(리포트_홈_스페이스)
_EOF_ 리턴
}
# 프로세스 명령줄 옵션

합산
대화형=
파일 이름=
while [[ -n $1 ]]; $1을 case로 처리합니다.
-f | --파일)
변화
파일 이름=$1
;;
대화형=
파일 이름=
while [[ -n $1 ]]; $1을 case로 처리합니다.
-f | --파일)
-i | --interactive) 대화형=1
;;
-h | --help) 사용법 종료
;;
*) 사용법 >&2
1 번 출구
;;
esac 시프트
한
# 대화형 모드
if [[ -n $interactive ]]; then while true; do
read -p "출력 파일 이름을 입력하세요: " filename if [[ -e $filename ]]; then
read -p "'$filename'이 존재합니다. 덮어쓰시겠습니까? [y/n/q] > " case $REPLY in
Y|y) 휴식
;;
Q|q) echo "프로그램이 종료되었습니다." 종료
;;
*) 계속하다
;;
그 C
elif [[ -z $filename ]]; 그런 다음 계속합니다.
그렇지 않으면
하다
fi
한
fi
# 출력 HTML 페이지
if [[ -n $파일 이름 ]]; 그러면
$filename && [[ -f $filename ]];을 터치하면 write_html_page > $filename이 됩니다.
그렇지 않으면
-i | --interactive) 대화형=1
;;
-h | --help) 사용법 종료
;;
*) 사용법 >&2
1 번 출구
;;
esac 시프트
한
# 대화형 모드
if [[ -n $interactive ]]; then while true; do
read -p "출력 파일 이름을 입력하세요: " filename if [[ -e $filename ]]; then
read -p "'$filename'이 존재합니다. 덮어쓰시겠습니까? [y/n/q] > " case $REPLY in
Y|y) 휴식
;;
Q|q) echo "프로그램이 종료되었습니다." 종료
;;
*) 계속하다
;;
그 C
elif [[ -z $filename ]]; 그런 다음 계속합니다.
그렇지 않으면
하다
fi
한
fi
# 출력 HTML 페이지
if [[ -n $파일 이름 ]]; 그러면
$filename && [[ -f $filename ]];을 터치하면 write_html_page > $filename이 됩니다.
그렇지 않으면
echo "$PROGNAME: '$filename' 파일을 쓸 수 없습니다" >&2 종료 1
그렇지 않으면
write_html_page
fi
echo "$PROGNAME: '$filename' 파일을 쓸 수 없습니다" >&2 종료 1
그렇지 않으면
write_html_page
fi
아직 끝나지 않았습니다. 할 수 있는 일과 개선할 부분이 아직 많이 남아 있습니다.
문서