리눅스 쉘 스크립트 사용법
리눅스 쉘 스크립트 사용법 
- Linux(Ubuntu) Shell script  (쉘스크립트) (linux shell)
//================== 
* 인자 받기 (argument) 
https://tecadmin.net/pass-command-line-arguments-in-shell-script/ 
$* = 모든 인자 
$0 = 자신 이름 
$1 = 첫번째 인자 
//========== 
* 비교 
- 변수는 따옴표로 묶어야 한다. 
if [ "$1" == "up" ]; then 
echo up; 
elif [ "$1" == "down" ]; then 
echo down;
else
echo else;
fi 
//=============== 
* 시간 
https://www.cyberciti.biz/faq/linux-unix-formatting-dates-for-display/ 
#! /bin/bash 
set -x #명령어 보이기 
echo now=$(date +%y%m%d-%H%M%S) 
//----------------------------------------------------------------------------- 
* 현재 스크립트 파일 경로 
https://stackoverflow.com/questions/59895/how-do-i-get-the-directory-where-a-bash-script-is-located-from-within-the-script
#!/usr/bin/env bash 
파일 이름 = $(basename "$0") 
폴더 경로 = $(dirname "$0") 
실행 경로 = [$(pwd) 
//------------------------------------- 
* 문자열 비교 
https://www.linuxtechi.com/compare-numbers-strings-files-in-bash-script/
    var1 = var2     checks if var1 is the same as string var2 
    var1 != var2    checks if var1 is not the same as var2 
    var1 < var2     checks if var1 is less than var2 
    var1 > var2     checks if var1 is greater than var2 
    -n var1             checks if var1 has a length greater than zero 
    -z var1             checks if var1 has a length of zero 
//------------------------------------- 
* 숫자 비교 
https://www.linuxtechi.com/compare-numbers-strings-files-in-bash-script/
    num1 -eq num2                  check if 1st  number is equal to 2nd number 
    num1 -ge num2                  checks if 1st  number  is greater than or equal to 2nd number 
    num1 -gt num2                  checks if 1st  number is greater than 2nd number 
    num1 -le num2                   checks if 1st number is less than or equal to 2nd number 
    num1 -lt num2                   checks if 1st  number  is less than 2nd number 
    num1 -ne num2                  checks if 1st  number  is not equal to 2nd number 
//------------------------------------- 
* 문자열 합치기 
$ X="String" 
$ Y="Concatenation!" 
$ echo "${X}${Y}123" 
//------------------------------------- 
* 명령실행 결과 값 비교 
ex) 
if [ $(redis-cli ping) == "PONG" ]; then        
    break 
fi 
//------------------------------------- 
* 시간 문자열 출력 
date +"%m-%d %H:%M:%S" 
- 다른 문자열과 합쳐서 출력 
echo  "$(date +"%m-%d %H:%M:%S") - ok" 
//----------------------------------------------------------------------------- 
* if 사용법 
#! /bin/bash 
if [ "$1" != "" ] 
then 
echo $1 
elif [ "$2" != "" ] 
then 
echo $2 
else 
echo "none" 
fi 
//------------------------------------- 
- (줄임) 위 코드는 다음과 같음 
if [ "$1" != "" ]; then echo $1 
elif [ "$2" != "" ]; then echo $2 
else echo "none" 
fi 
//------------------------------------- 
if [ "$1" != "" ]; then echo $1  
fi 
- (줄임) 위 코드는 다음과 같음 
[ "$1" != "" ] && echo $1 
//------------------------------------- 
if [ "$1" == "" ]; then echo "none" 
else echo $1 
fi 
- (줄임) 위 코드는 다음과 같음 
[ "$1" == "" ] || echo $1 
//----------------------------------------------------------------------------- 
* for 루프 
for i in 1 2 3 4 5 
do 
    if [ $i -gt 2 ]; then 
        break 
    fi 
done 
//------------------------------------- 
for i in {1..10} 
do 
    if [[ $i == '2' ]] 
    then 
            echo "Number $i!" 
            break 
    fi 
        echo "$i" 
i=$((i+1)) # 증가 
done 
//----------------------------------------------------------------------------- 
* while 루프 
i=1 
while [ $i -le 10 ] 
do 
   echo $i 
   if [ $i -eq 5 ] 
   then 
      break 
   fi 
   i=$((i+1)) # 증가 
done 
//------------------------------------- 
loop=0 
while true 
do 
    sleep 1 
    loop=$((loop+1)) # 증가 
    if [ $loop -gt 2 ]; then 
        break 
    fi 
done 
//----------------------------------------------------------------------------- 
* function  
https://www.tutorialspoint.com/unix/unix-shell-functions.htm
# 함수 정의 
Hello () { 
   echo "Hello World $1 $2" 
   return 10 
} 
# 함수 사용 
Hello Zara Ali 
//------------------------------------- 
- .bashrc 에서 사용예 
funcFind() { [ $1 != "" ] && sudo find / -name "$1"; } 
alias find3='funcFind' 
alias find2='cmd_arg sudo find / -name' 
cmd_arg(){ 
        $@; 
}
# /mnt를 제외하고 파일 검색
find2(){ 
        if [ "$2" != "" ] 
        then 
        sudo find "$2" -path "/mnt" -prune -o -name "$1" -print
        else 
        sudo find / -path "/mnt" -prune -o -name "$1" -print 
        fi 
}
#  여러 폴더 제외하고 검색
# https://stackoverflow.com/questions/4210042/how-do-i-exclude-a-directory-when-using-find
# find . -type d \( -path ./dir1 -o -path ./dir2 -o -path ./dir3 \) -prune -o -name '*.txt' -print
//----------------------------------------------------------------------------- 
* 파일에 문자열 쓰기 
echo "Hello, World!" >> example.txt 
//----------------------------------------------------------------------------- 
실행중인 프로세스 카운트 
sudo ps -aux | grep "프로세스 명령줄 이름" | wc -l 
// ex) 
ps_cnt=$(ps -aux | grep "artisan horizon" | wc -l) 
if [ $ps_cnt -gt 1 ] ; then 
        echo $(date +"%m-%d %H:%M:%S") "horizon already running $ps_cnt" 
        exit 
fi 
//============= 
//참고 
http://faculty.salina.k-state.edu/tim/unix_sg/shell/variables.html#