합산
위치 매개변수를 추가하면 이제 상당히 기능적인 스크립트를 작성할 수 있습니다. 간단하고 반복적인 작업의 경우 위치 매개변수를 사용하면 사용자의 컴퓨터에 배치할 수 있는 매우 유용한 쉘 함수를 작성할 수 있습니다. .bashrc 파일.
당사의 sys_info_page 프로그램이 더욱 복잡해지고 정교해졌습니다. 다음은 가장 최근 변경 사항이 강조 표시된 전체 목록입니다.
#! / bin / bash
# sys_info_page: 시스템 정보 페이지를 출력하는 프로그램
PROGNAME=$(기본 이름 $0)
TITLE="$HOSTNAME에 대한 시스템 정보 보고서" CURRENT_TIME=$(date +"%x %r %Z")
TIMESTAMP="$USER에 의해 $CURRENT_TIME 생성됨"
Report_uptime () { 고양이 <<- _EOF_
시스템 가동 시간
$(가동 시간)
_EOF_ 반환
#! / bin / bash
# sys_info_page: 시스템 정보 페이지를 출력하는 프로그램
PROGNAME=$(기본 이름 $0)
TITLE="$HOSTNAME에 대한 시스템 정보 보고서" CURRENT_TIME=$(date +"%x %r %Z")
TIMESTAMP="$USER에 의해 $CURRENT_TIME 생성됨"
Report_uptime () { 고양이 <<- _EOF_
시스템 가동 시간
$(가동 시간)
_EOF_ 반환
}
report_disk_space () { 고양이 <<- _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 () { 고양이 <<- _EOF_
$TITLE
$TITLE
$TIMESTAMP
$(보고_가동시간)
$(report_disk_space)
$(report_home_space)
_EOF_ 반환
}
# 프로세스 명령줄 옵션
}
report_disk_space () { 고양이 <<- _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 () { 고양이 <<- _EOF_
$TITLE
$TITLE
$TIMESTAMP
$(보고_가동시간)
$(report_disk_space)
$(report_home_space)
_EOF_ 반환
}
# 프로세스 명령줄 옵션
합산
대화형=
파일 이름=
동안 [[ -n $1 ]]; 1달러를 넣어라
-f | --파일)
변화
파일 이름=$1
;;
대화형=
파일 이름=
동안 [[ -n $1 ]]; 1달러를 넣어라
-f | --파일)
-i | --대화형) 대화형=1
;;
-h | --help) 사용법 종료
;;
*) 사용법 >&2
1 번 출구
;;
에삭 시프트
한
# 대화형 모드
if [[ -n $interactive ]]; 그렇다면 사실이지만; 하다
read -p "출력 파일 이름 입력: " filename if [[ -e $filename ]]; 그 다음에
read -p "'$filename'이 존재합니다. 덮어쓰시겠습니까? [y/n/q] > " case $REPLY in
Y|y) 휴식
;;
Q|q) echo "프로그램이 종료되었습니다." 출구
;;
*) 계속하다
;;
그 C
elif [[ -z $파일명 ]]; 그럼 계속해
그렇지 않으면
하다
fi
한
fi
# HTML 페이지 출력
if [[ -n $파일명 ]]; 그 다음에
$filename && [[ -f $filename ]]을 터치하면; 그런 다음 write_html_page > $filename
그렇지 않으면
-i | --대화형) 대화형=1
;;
-h | --help) 사용법 종료
;;
*) 사용법 >&2
1 번 출구
;;
에삭 시프트
한
# 대화형 모드
if [[ -n $interactive ]]; 그렇다면 사실이지만; 하다
read -p "출력 파일 이름 입력: " filename if [[ -e $filename ]]; 그 다음에
read -p "'$filename'이 존재합니다. 덮어쓰시겠습니까? [y/n/q] > " case $REPLY in
Y|y) 휴식
;;
Q|q) echo "프로그램이 종료되었습니다." 출구
;;
*) 계속하다
;;
그 C
elif [[ -z $파일명 ]]; 그럼 계속해
그렇지 않으면
하다
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
아직 끝나지 않았습니다. 우리가 할 수 있는 일과 개선할 수 있는 일이 아직 더 많이 있습니다.