Bash shell script 유용한 문법 모음

YOBY·2024년 10월 8일
0
#/bin/bash -e

set -e #이렇게도 줄수있다.
  • 스크립트 내의 명령어 중 하나라도 실패할 경우 즉시 종료

set -x
#스크립트 내용들...
set -e
  • set -x 로 명령어 실행 과정을 출력하고(디버그모드)
  • set +x 종료

homeDir=$(realpath "$(dirname "$0")") 
  • 현재 쉘을 실행시키는 PWD위치

LOG_FILE="${homeDir}/logs/log_$(date +%Y%m%d).log"
function log(){             
  echo "$(date +'%Y-%m-%d %H:%M:%S') - $1" >> "$LOG_FILE" 
}
  • 위와 같이 병행해서 로그 파일을 생성하고 로깅 남기기

function successOrFail() {    
  if [[ $1 != 0 ]]; then      
    echo "실패"                
    exit 1                        
  else
    echo "성공"
  fi
} 
  • 성공 실패 여부를 체크

ssh-keygen -R "IP"
ssh-keyscan -t ecdsa-sha2-nistp256 "IP" >> ~/.ssh/known_hosts
  • 기존 호스트키 제거 및 새로운 호스트키 추가

DIR="/path/to/directory"

if [[ ! -d "$DIR" ]]; then
  mkdir -p "$DIR"
  echo "$DIR 디렉터리가 생성되었습니다."
else
  echo "$DIR 디렉터리가 이미 존재합니다."
fi
  • 스크립트 실행 시 특정 디렉터리가 없으면 자동으로 생성

START=$(date +%s)
#스크립트 내용들...
END=$(date +%s)
DIFF=$(( END - START ))
echo "명령어 실행에 걸린 시간: $DIFF 초"
  • 스크립트의 성능을 측정 및 시간 측정

PORT=8080

if ! lsof -i:$PORT >/dev/null; then
  echo "$PORT 포트는 사용 가능합니다."
  # 사용할 명령어 실행
else
  echo "$PORT 포트는 이미 사용 중입니다."
  exit 1
fi
  • 특정 포트 확인 후 사용 가능 여부 검사

function ssh_command(){
  local IP=$1
  local COMMAND=$2
  ssh "$IP" "echo "비밀번호" | sudo -S $COMMAND"
}
ssh_command "IP" "hostname euiyeob"
  • 원격접속후 sudo 명령어 사용 하기

cat <<EOF > myfile.txt
This is line 1
This is line 2
EOF

mysql -u root -p <<EOF
CREATE DATABASE mydatabase;
USE mydatabase;
CREATE TABLE mytable (id INT, name VARCHAR(50));
EOF
  • 다양한 명령어를 한번에 실행 가능
  • ssh 원격접속해서 다양한 명령어를 EOF(end of file)을 통해 명령 가능
  • query도 EOF를 통해서 여러문장을 실행 가능

spawn ssh USER@IP
expect "password:"
send "mypassword\r"
puts "write password successfully"
interact
  • 대화형 스크립트 처리 가능

command1 &
command2 &

wait
  • & 백그라운드 프로세스로 실행(즉 command1, command2 병렬처리)
  • wait으로 프로세스 백그라운드 프로세스 끝나기를 기다리기

nc -zv 192.168.1.1 22
  • netcat(nc)를 사용하여 네트워크 포트가 열려 있는지 확인

#!/bin/bash

PS3='Please enter your choice (1-4): '
options=("1" "2" "3" "Quit")
select opt in "${options[@]}"
do
    case $REPLY in
        1) echo "You chose 1";;
        2) echo "You chose 2";;
        3) echo "You chose 3";;
        4) echo "Exiting. Goodbye!"; break;;
        *) echo "Invalid option. Please try again.";;
    esac
done
  • 사용자가 번호를 입력하면 해당 옵션에 대한 메시지를 출력

variable=${1:-default_value}
echo ${variable}
  • 첫 번째 인자 $1가 설정되어 있지 않으면 variable에 default_value를 할당

0개의 댓글

관련 채용 정보