Linux에서 효과적인 Bash 스크립트를 작성하기 위한 10가지 유용한 팁
쉘 스크립팅은 Linux에서 배우고 수행할 수 있는 가장 쉬운 프로그래밍 형태입니다. 더욱이, 작업 자동화, 몇 가지만 언급하자면 새로운 간단한 유틸리티/도구 개발을 위한 시스템 관리에 필요한 기술입니다.
이 기사에서는 효과적이고 안정적인 bash 스크립트를 작성하기 위한 10가지 유용하고 실용적인 팁을 공유할 것입니다. 여기에는 다음이 포함됩니다.
1. 스크립트에는 항상 주석을 사용하세요
이는 쉘 스크립팅뿐만 아니라 다른 모든 종류의 프로그래밍에 적용되는 권장 방법입니다. 스크립트에 주석을 작성하면 귀하 또는 스크립트를 검토하는 다른 사람이 스크립트의 다른 부분이 수행하는 작업을 이해하는 데 도움이 됩니다.
우선 주석은 #
기호를 사용하여 정의됩니다.
#TecMint is the best site for all kind of Linux articles
2. 실패 시 스크립트 종료 만들기
때때로 bash는 특정 명령이 실패하더라도 스크립트를 계속 실행하여 나머지 스크립트에 영향을 미칠 수 있습니다(결국 논리적 오류가 발생할 수 있음). 명령이 실패할 때 스크립트를 종료하려면 아래 줄을 사용하십시오.
#let script exit if a command fails
set -o errexit
OR
set -e
3. Bash가 선언되지 않은 변수를 사용할 때 스크립트 종료 만들기
Bash는 논리적 오류를 일으킬 수 있는 선언되지 않은 스크립트를 사용하려고 시도할 수도 있습니다. 따라서 선언되지 않은 변수를 사용하려고 할 때 스크립트를 종료하도록 bash에 지시하려면 다음 행을 사용하십시오.
#let script exit if an unsed variable is used
set -o nounset
OR
set -u
4. 변수를 참조하려면 큰따옴표를 사용하세요.
참조하는 동안(변수 값 사용) 큰따옴표를 사용하면 단어 분할(공백 관련)과 불필요한 글로빙(와일드카드 인식 및 확장)을 방지하는 데 도움이 됩니다.
아래 예를 확인하세요.
#!/bin/bash
#let script exit if a command fails
set -o errexit
#let script exit if an unsed variable is used
set -o nounset
echo "Names without double quotes"
echo
names="Tecmint FOSSMint Linusay"
for name in $names; do
echo "$name"
done
echo
echo "Names with double quotes"
echo
for name in "$names"; do
echo "$name"
done
exit 0
파일을 저장하고 종료한 후 다음과 같이 실행합니다.
./names.sh
5. 스크립트에서 함수 사용하기
매우 작은 스크립트(몇 줄의 코드 포함)를 제외하고 항상 함수를 사용하여 코드를 모듈화하고 스크립트를 더 읽기 쉽고 재사용 가능하게 만드는 것을 기억하세요.
함수 작성 구문은 다음과 같습니다.
function check_root(){
command1;
command2;
}
OR
check_root(){
command1;
command2;
}
한 줄 코드의 경우 다음과 같이 각 명령 뒤에 종료 문자를 사용합니다.
check_root(){ command1; command2; }
6. 문자열 비교에는 == 대신 =를 사용하세요.
==
는 =
의 동의어이므로 문자열 비교에는 단일 =
만 사용하십시오. 예를 들면 다음과 같습니다.
value1=”linux-console.net”
value2=”fossmint.com”
if [ "$value1" = "$value2" ]
7. 대체를 위해 레거시 '명령어' 대신 $(명령)을 사용합니다.
명령 대체는 명령을 해당 출력으로 대체합니다. 명령 대체를 위해 역따옴표 `command`
대신 $(명령)
을 사용하세요.
이는 shellcheck 도구에서도 권장됩니다(셸 스크립트에 대한 경고 및 제안 표시). 예를 들어:
user=`echo “$UID”`
user=$(echo “$UID”)
8. 읽기 전용을 사용하여 정적 변수 선언
정적 변수는 변경되지 않습니다. 해당 값은 스크립트에 정의된 후에는 변경할 수 없습니다.
readonly passwd_file=”/etc/passwd”
readonly group_file=”/etc/group”
9. ENVIRONMENT 변수에는 대문자 이름을 사용하고 사용자 정의 변수에는 소문자를 사용하십시오.
모든 bash 환경 변수의 이름은 대문자로 지정되므로 변수 이름 충돌을 방지하려면 소문자를 사용하여 사용자 지정 변수 이름을 지정하세요.
#define custom variables using lowercase and use uppercase for env variables
nikto_file=”$HOME/Downloads/nikto-master/program/nikto.pl”
perl “$nikto_file” -h “$1”
10. 긴 스크립트에 대해서는 항상 디버깅을 수행하세요
수천 줄의 코드로 bash 스크립트를 작성하는 경우 오류를 찾는 것이 악몽이 될 수 있습니다. 스크립트를 실행하기 전에 문제를 쉽게 해결하려면 몇 가지 디버깅을 수행하세요. 아래 제공된 가이드를 읽고 이 팁을 익히십시오.
- Linux에서 쉘 스크립트 디버깅 모드를 활성화하는 방법
- 쉘 스크립트에서 구문 검사 디버깅 모드를 수행하는 방법
- 셸 추적을 사용하여 셸 스크립트에서 명령 실행을 추적하는 방법
그게 다야! 공유할 수 있는 다른 최고의 bash 스크립팅 방법이 있습니까? 그렇다면 아래의 의견 양식을 사용하여 그렇게 하십시오.