Linux를 배우고 Shell 스크립트를 작성하십시오.

쉘 스크립트 작성

Shell 스크립트 명령에는 두 가지 작업 모드가 있습니다
. ➢Interactive: 사용자가 명령을 입력할 때마다 즉시 실행됩니다.
➢Batch 처리: 사용자는 완전한 Shell 스크립트를 미리 작성하고 Shell은 많은 명령을 한 번에 스크립트.

간단한 스크립트 작성

현재 시스템은 기본적으로 Bash를 명령줄 터미널 인터프리터로 사용하도록 설정되어 있습니다.

echo $SHELL

현재 작업 경로를 보고 현재 디렉토리에 있는 모든 파일과 속성 정보를 나열하려면 이 기능을 구현하는 스크립트는 다음과 유사해야 합니다.

vim example.sh

bash example.sh

위의 Bash 인터프리터 명령으로 Shell 스크립트 파일을 직접 실행하는 것 외에도 스크립트 프로그램을 실행하는 두 번째 방법은 전체 경로를 입력하여 실행하는 것입니다. 그러나 기본적으로 권한이 부족하여 오류 메시지가 표시되며 이 때 스크립트 파일에 실행 권한만 추가하면 됩니다.

./example.sh
chmod u+x example.sh
./example.sh

사용자 매개변수 수신

사용자가 특정 명령을 실행할 때 출력 결과는 매개 변수 유무에 따라 다릅니다.

wc -l anaconda-ks.cfg
wc -c anaconda-ks.cfg
wu -w anaconda-ks.cfg

파라미터를 받기 위한 변수가 내장되어 있으며 변수 사이에는 공백이 사용됩니다. 예를 들어 $0은 현재 쉘 스크립트 프로그램의 이름에 해당하고, $#는 총 매개변수 수에 해당하고, $*는 모든 위치의 매개변수 값에 해당하고, $?는 마지막 명령의 반환 값을 표시하는 데 해당합니다. 실행, $1, $2, $3... 각각은 그림과 같이 N번째 위치의 매개변수 값에 해당합니다.

여기에 이미지 설명 삽입

vim example.sh

#!/bin/bash
echo "当前脚本名称为$0"
echo "总共有$#个参数,分别是$*。"
echo "第 1 个参数为$1,第 5 个为$5。"

bash example.sh one two three four five six


산출

当前脚本名称为 example.sh
总共有 6 个参数,分别是 one two three four five six。
第 1 个参数为 one,第 5 个为 five。

사용자의 매개 변수 판단

여기에 이미지 설명 삽입
테스트 대상에 따라 조건부 테스트문은 크게 4가지로 나눌 수 있다:
➢ 파일 테스트문,
➢ 논리 테스트문,
➢ 정수값 비교문,
➢ 문자열 비교문.

파일 테스트는 지정된 조건을 사용하여 파일이 존재하는지 또는 권한이 충족되는지 등을 결정하는 연산자입니다. 특정 매개 변수는 표에 나와 있습니다.
여기에 이미지 설명 삽입
다음은 file test 문을 사용하여 /etc/fstab이 디렉토리형 파일인지 확인한 다음 Shell 인터프리터의 내장 $? 반환 값이 0이면 디렉터리가 존재하고, 반환 값이 0이 아니면 디렉터리가 아니거나 디렉터리가 존재하지 않음을 의미합니다.

[ -d /etc/fstab  ]
echo $?

그런 다음 file test 문을 사용하여 /etc/fstab이 일반 파일인지 확인합니다. 반환 값이 0이면 파일이 존재하고 일반 파일임을 의미합니다.

[ -f /etc/fstab ]
echo $?

테스트 결과를 논리적으로 분석하기 위해 논리적 문장을 사용하며 테스트 결과에 따라 다른 효과를 얻을 수 있습니다. 예를 들어 Shell 터미널에서 논리적 "AND" 연산 기호는 &&입니다. 즉, 이전 명령이 성공적으로 실행된 후 다음 명령이 실행되므로 /dev/cdrom 파일이 존재하는지 여부를 확인하는 데 사용할 수 있습니다. , 존재하는 경우 Exist 서체 출력

[ -e /dev/cdrom ] && echo "Exist"

논리적인 "and"외에도 논리적인 "or"가 있는데, 리눅스 시스템에서 그것의 연산기호는 ||로 앞선 명령이 실패하면 다음 명령이 실행된다는 의미이므로 다음과 같이 사용할 수 있다. 시스템 환경 변수를 결합합니다. USER는 현재 로그인한 사용자가 비관리자인지 확인합니다.

echo $USER
[ $USER = root ] || echo "user"
su - linuxprobe

세 번째 논리문은 "not"이고 Linux 시스템의 연산 기호는 느낌표(!)로, 조건 테스트에서 판단 결과의 반대 값을 취한다는 의미입니다. 즉, 원래 테스트의 결과가 맞으면 오답으로 만들고, 원래 테스트의 결과가 틀리면 올바로 고치는 것입니다.

이제 루트 관리자 상태로 다시 전환한 다음 현재 사용자가 관리자가 아닌 사용자인지 확인합니다. 2번의 부정으로 판단 결과가 맞기 때문에 기본 정보는 정상적으로 출력됩니다.

exit
[ ! $user = root ] || echo "administrator"

느낌표는 판정문 앞에 위치하여 전체 테스트문의 부정 연산을 나타내야 하며, "!="는 같지 않음 기호(≠ ), 실행하더라도 효과는 같지만 논리적 관계가 빠져 있으니 이 점에 더욱 주의를 기울이시기 바랍니다.

현재 관리자 사용자인 루트로 로그인되어 있습니다. 다음 예제의 실행 순서는 현재 로그인한 사용자의 USER 변수 이름이 루트인지 여부를 먼저 판단한 다음 논리 "not" 연산자를 사용하여 부정 연산을 수행하고 효과는 다음과 같습니다. 현재 로그인한 사용자는 관리자가 아닌 사용자입니다. 마지막으로 조건이 참이면 논리 "AND" 연산자에 따라 단어 user가 출력되고, 조건이 만족되지 않으면 논리 "or" 연산자를 통해 단어 root가 출력되며 다음과 같은 | 이전 &&가 true | 기호가 아닌 경우에만 실행됩니다.

[ ! $USER = root ] && echo "user" || echo "root"

정수 비교 연산자는 숫자에 대해서만 작동하며 문자열, 파일 등으로 숫자를 작동할 수 없습니다. 등호는 할당 명령과 충돌하므로 보다 큼 및 보다 작음 기호는 각각 출력 리디렉션 명령 및 입력 리디렉션 명령과 충돌합니다. 따라서 작업에 정식 정수 비교 연산자를 사용해야 합니다. 사용 가능한 정수 비교 연산자는 표에 나와 있습니다.
여기에 이미지 설명 삽입

[ 10 -gt 10 ] 
echo $?

[ 10 -eq 10 ]
echo $?

시스템에서 현재 사용 중이고 사용 가능한 메모리 양에 대한 정보를 얻는 데 사용할 수 있는 free 명령입니다. 다음으로 free -m 명령을 사용하여 메모리 사용량(MB)을 확인한 다음 "grep Mem:" 명령을 사용하여 나머지 메모리 라인을 필터링한 다음 awk '{print $4}' 명령을 사용하여 네 번째 열 .

free -m
free -m | grep Mem:
free -m | grep Mem: | awk '{print $4}'

이 명령을 셸 스크립트에 작성하려면 다른 명령을 쉽게 호출할 수 있도록 출력 결과를 변수에 할당하는 것이 좋습니다.

FreeMen=`free -m | grep Mem: | awk '{print $4}'`

echo $FreeMen

정수 연산자를 사용하여 사용 가능한 메모리 값이 1024 미만인지 확인합니다. 1024 미만이면 "Insufficient Memory(메모리 부족)" 메시지가 표시됩니다.

[ $FreeMen -lt 1024 ] && echo "Insufficient Memory"

문자열 비교 문은 테스트 문자열이 null인지 또는 두 문자열이 동일한지 여부를 결정하는 데 사용됩니다. 변수가 정의되지 않았는지(즉, 내용이 비어 있는지) 판단하는 데 자주 사용되며 비교적 이해하기 쉽습니다. 문자열 비교의 일반적인 연산자는 표에 나와 있습니다.
여기에 이미지 설명 삽입
다음으로 String 변수가 비어 있는지 판단하여 변수가 정의되어 있는지 판단합니다.

[ -z $String ]
echo $?

논리 연산자를 다시 도입하여 사용해 보십시오. 현재 언어를 저장하는 데 사용된 환경 변수 값 LANG이 영어(en.US)가 아닌 경우 논리적 테스트 조건이 충족되고 "Not en.US"(영어가 아님)라는 단어가 출력됩니다.

echo $LANG
[ ! $LANG = "en.US" ] && echo "Not en.US"

Supongo que te gusta

Origin blog.csdn.net/AdamCY888/article/details/131299923
Recomendado
Clasificación