셸 스 크 립 트 는 셸 스 크 립 트 의 실행 절차 와 변 수 를 감시 하 는 값 을 실현 합 니 다.
셸 프로그램 코드:
#!/bin/bash
function setlogfile
{
if ! [ -z "$1" ]; then
echo "logfilename is not empty!" >> kthh
exec 2>> $1
exec 1>> $1
fi
}
num1=$1
logfile=$2
execlogfile=$3
setlogfile ${execlogfile}
set -x
if [ $num1 -eq 0 ]; then
echo "num1 is 0">> ${logfile}
elif [ $num1 -ge 0 ]; then
echo "num1 is grate 0">> ${logfile}
else
echo "num1 is less 0">> ${logfile}
fi
/sbin/shutdown -k 10
if [ $num1 -eq 0 ]; then
echo "num1 is 0 again">> ${logfile}
fi
명령 행 에서 실행:
[root@UFO shellprogram]# ./testexecutelog.sh 0 msglog execlog
위의 셸 스 크 립 트 프로그램 에서 num 1 에 대응 하 는 값 은 명령 행 의 0 입 니 다. logfile 의 값 은 msglog 입 니 다. execlogfile 의 값 은 execlog 입 니 다.함수 setlogfile 의 사용 은 setlogfile 로그 파일 이름 입 니 다.예 를 들 어 setlogfile${execlogfile},함수 중의 exec 2>>$1 을 사용 합 니 다.exec 1>>$1 은 표준 출력 과 표준 오류 출력 정 보 를 execlog 파일 로 재 설정 하 는 것 을 표시 합 니 다.
다음은 execlogfile 의 내용 을 살 펴 보면 셸 프로그램의 실행 절차 와 실행 과정 에서 변수의 값 변 화 를 볼 수 있 습 니 다.
[root@UFO shellprogram]# cat execlog
+ '[' 0 -eq 0 ']'
+ echo 'num1 is 0'
+ /sbin/shutdown -k 10
+ '[' 0 -eq 0 ']'
+ echo 'num1 is 0 again'
이 를 통 해 알 수 있 듯 이 프로그램의 절 차 는.../testexecutelog.sh 후의 첫 번 째 매개 변수 와 결 정 됩 니 다.첫 번 째 매개 변 수 를 0 보다 크 거나 0 보다 작은 값 으로 바 꾸 어 테스트 할 수도 있다.그 중에서 가장 중요 한 문장 은 set-x 입 니 다.이 문장의 의 미 는 간단 한 명령 이 확 장 된 후에 PS4 확장 치 를 표시 하고 그 다음 에 실행 할 명령 입 니 다.이 문장 을 실행 하지 않 으 면 실행 중인 변수의 실제 값 을 execlog 에 인쇄 하지 않 습 니 다.set 에 대한 사용 은 man set 에서 더 많이 알 수 있 습 니 다.
메모:exec 가 파일 설명 자 를 조작 할 때 도 이때 만 exec 는 현재 셸 환경 을 덮어 쓰 지 않 습 니 다.새로운 프로 세 스 를 시작 하지 않 는 다 는 것 이다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
셸 스 크 립 트 (다 중 스 레 드 대량 생 성 사용자)예 를 들 어 백업 데이터 베 이 스 는 100 개의 라 이브 러 리 가 있 고 정상 적 인 백업 효율 이 매우 낮 습 니 다.다 중 스 레 드 가 있 으 면 백업 하 는 데 10 시간 이 걸 릴 수도 있 었 는데 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.