# 변수값을 대입할땐 기본적으로 정수의 경우 쿼테이션x, 문자열의 경우 쿼테이션o

# 더블 쿼테이션

#!/bin/bash

# 변수 선언방법
itemNumber=1       # 정수
itemName1=name     # 문자열도 기본적으로 정수와 같이 감싸지 않아도 된다
itemName2="name"   # 문자열
itemName3="name : ice"  # 이와같이 공백, 특수문자가 있는경우 감싸지않으면 에러가 발생한다
keyword="ice*.txt"      # ice로 시작하는 텍스트 파일 검색, 특수문자가 있으므로 감싸야한다
dir="home/name/test"


# 변수 호출방법

# 특수문자가 있는 keyword변수에 특수문자가 있으므로 에러가 발생
Files=$(find ${dir} -name ${keyword} -exec basename {} \;)

# 특수문자가 있는 keyword변수를 쿼테이션으로 감쌋기 때문에 정상처리
Files=$(find ${dir} -name "${keyword}" -exec basename {} \;)

 

# 싱글 쿼테이션

#!/bin/bash

# 변수 선언방법
itemNumber=1       # 정수
itemName1=name     # 문자열도 기본적으로 정수와 같이 감싸지 않아도 된다
itemName2="name"   # 문자열
itemName3="name : ice"  # 이와같이 공백, 특수문자가 있는경우 감싸지않으면 에러가 발생한다
keyword="ice*.txt"      # ice로 시작하는 텍스트 파일 검색, 특수문자가 있으므로 감싸야한다
dir="home/name/test"


# 변수 호출방법
# 더블 쿼테이션 안에서는 선언된 변수값으로 치환되어 출력된다
echo "테스트 : ${itemName2} "  # 테스트 : name 

# 싱글 쿼테이션 안에서 변수를 선언해도 치환이 발생하지않고 문자열 그대로 출력된다
echo '테스트 : ${itemName2} '  # 테스트 : ${itemName2}

'Programming > Shell Script' 카테고리의 다른 글

[bash] Shell Script 기본적인 코드 작성법  (0) 2023.07.10
[Bash] Shell Script 문법  (0) 2023.07.05
[Bash]Shell Script 기초  (0) 2023.07.04

# 변수 작성후 출력(변수명과 값사이에 =는 공백이 없어야 한다)

#!/bin/bash

item="ice cream"

echo "${item} 구매완료"

 

 

# 함수 작성후 호출(function은 생략이 가능하다)

#!/bin/bash

# 다른 언어와 다르게 인수가 있어도 함수괄호 안에는 아무것도 입력하지않음
purchase(){
item=$1
echo "${item}을 장바구니에 넣었습니다"

return 0

}

# main
# 함수 호출
purchase "아이스크림"
result=$?  # 함수 호출후 바로 아래에 $?로 함수리턴값을 받을수 있다

# 함수 결과값을 판단
if [ result -eq 0 ]; then
    echo "문제없음"
    exit 0
else
    echo "문제있음"
    exit 1
fi

 

# 프로그램 실행

#!/bin/bash

# 다른프로그램 호출
sh home/user/itemDelete.sh "iceCream"
result=$?  # 함수와 마찬가지로 호출후 바로 아래에 $?로 함수리턴값을 받을수 있다

# 함수 결과값을 판단
if [ result -eq 0 ]; then
    echo "문제없음"
    exit 0
else
    echo "문제있음"
    exit 1
fi

 

# 다른유저권한으로 프로그램 실행(외부 프로그램)

#!/bin/bash

# 다른유저로 전환해 해당프로그램을 실행
# 전환한 유저의 환경변수를 이용하는 경우 -를 추가한다
echo "password" | "ID" -c "sh home/user/itemDelete.sh iceCream"
# echo "password" | "ID" - -c "sh home/user/itemDelete.sh iceCream"
result=$?  # 호출후 바로 아래에 $?로 함수리턴값을 받을수 있다

# 함수 결과값을 판단
if [ result -eq 0 ]; then
    echo "문제없음"
    exit 0
else
    echo "문제있음"
    exit 1
fi

 

# 다른유저권한으로 프로그램 실행(내부 작성)

#!/bin/bash

purchase(){
item=$1
echo "${item}을 장바구니에 넣었습니다"
return 0
}

# 함수를 환경변수로 내보냄
export -f purchase

# 다른유저로 전환해 해당프로그램을 실행
# -를 넣지않고 환경변수를 유지
echo "password" | "ID" -c "

# 10행에서 내보낸 환경변수 호출
purchase "아이스크림"
result=$?  # 함수 호출후 바로 아래에 $?로 함수리턴값을 받을수 있다

# 함수 결과값을 판단
if [ result -eq 0 ]; then
    echo "문제없음"
    exit 0
else
    echo "문제있음"
    exit 1
fi

"
result=$?  # 호출후 바로 아래에 $?로 함수리턴값을 받을수 있다

# 함수 결과값을 판단
if [ result -eq 0 ]; then
    echo "문제없음"
    exit 0
else
    echo "문제있음"
    exit 1
fi

 

# 함수의 리턴값은 정수만 가능하다(문자열 리턴 불가능)

#!/bin/bash

# 정수값을 반환
purchase(){
item=$1
echo "${item}을 장바구니에 넣었습니다"

return 0 # 대개 0: 정상 1: 오류로 취급한다

}

# 문자열을 반환(에러가 발생)
purchase(){
item=$1
echo "${item}을 장바구니에 넣었습니다"

return "정상"

}


# 문자열을 반환하고 싶을때에는 전역변수에 값을 할당하는 식으로 반환이 가능하다

result=""

purchase(){
item=$1
echo "${item}을 장바구니에 넣었습니다"
result="정상"

return 0

}

'Programming > Shell Script' 카테고리의 다른 글

[Bash] 변수 취급방법  (0) 2023.07.12
[Bash] Shell Script 문법  (0) 2023.07.05
[Bash]Shell Script 기초  (0) 2023.07.04

변수선언방법

#!/bin/bash

#변수
test1=hello
test2=world

echo ${test1} ${test2}

#배열
test3=("kim" "han" "lee")

echo ${test3[@]}

#배열추가
test3+=("shin")

echo ${test3[@]}

 

비교 연산자

[ -z ] : 문자열의 길이가 0이면 참
[ -n ] : 문자열의 길이가 0이 아니면 참
[ -eq ] : 값이 같으면 참
[ -ne ] : 값이 다르면 참
[ -gt ] :  값1 > 값2
[ -ge ] : 값1  >= 값2
[ -lt ] : 값1 < 값2
[ -le ] : 값1 <= 값2
[ -a ] : &&연산과 동일 and 연산
[ -o ] : ||연산과 동일 xor 연산
[ -d ] : 파일이 디렉토리면 참
[ -e ] : 파일이 있으면 참
[ -L ] : 파일이 심볼릭 링크면 참
[ -r ] : 파일이 읽기 가능하면 참
[ -s ] : 파일의 크기가 0 보다 크면 참
[ -w ] : 파일이 쓰기 가능하면 참
[ -x ] : 파일이 실행 가능하면 참
[ 파일1 -nt 파일2 ]  : 파일1이 파일2보다 최신파일이면 참
[ 파일1 -ot 파일2 ]  : 파일1이 파일2보다 이전파일이면 참
[ 파일1 -ef 파일2 ] : 파일1이 파일2랑 같은 파일이면 참

 

if문

#!/bin/bash

number1=1

#숫자를 비교할때는 조건식을 사용
if [number -eq 1]; then
    echo ""
fi
if [number -ne 1]; then
    echo ""
fi


number2="1"
#문자를 비교할때는 연산자를 사용
if [number = "1"]; then
    echo ""
fi

if [number =! "1"]; then
    echo ""
fi

#변수끼리의 비교에서도 아래와 같다
test1="123"
test2="123"
test3=123
test4=123

#문자열 변수끼리 비교
if [${test1} = ${test2}]; then
    echo ""
fi

#정수형 변수끼리 비교
if [${test3} -eq ${test4}]; then
    echo ""
fi

#정수형 변수와 문자형 변수  비교
if [${test1} = "${test3}"]; then
    echo ""
fi


#and
if [${test3} -eq ${test4} -a ${test1} = "${test3}"]; then
    echo ""
fi

#or
if [${test3} -eq ${test4} -o ${test1} = "${test3}"]; then
    echo ""
fi

 

for문

#!/bin/bash

#배열을 차례대로 출력
array=(1 2 3 4 5)
for value in "${array[@]}"
do
  echo ${value}
done

#1에서 10까지 순차적 출력
for value in {1..10}
do
  echo ${value}
done

#ABC 차례대로 출력
list="A B C" 
for value in ${list}
do
  echo ${value}
done

 

while문

#!/bin/bash

number=10

#10까지 +1씩 하면서 반복
while [ ${number} -eq 10 ]
do
    echo ${number}
    number=$((${numver}+1))
done

 

'Programming > Shell Script' 카테고리의 다른 글

[Bash] 변수 취급방법  (0) 2023.07.12
[bash] Shell Script 기본적인 코드 작성법  (0) 2023.07.10
[Bash]Shell Script 기초  (0) 2023.07.04

 

시작은 최상단에 아래의 명령어를 서술하는 것으로 시작한다

#!/bin/bash

 

ls,ll : 현재 디렉토리에 있는 파일을 화면에 출력한다

mkdir : 새로운 디렉토리를 생성한다

mkdir newfile #현재 디렉토리에 newfile생성
mkdir -p /home/user/newfile #하위 디렉토리까지 모두 생성
mkdir -m 775 newfile #현재 디렉토리에 모든 유저가 접근가능한 newfile생성

echo : 문자열을 화면에 출력한다

hello=hi!
echo ${hello} 안녕하세요

cat : 파일의 내용을 화면에 출력한다

cat helloworld.txt

rm : 파일을 삭제한다

rm test.txt

 

pwd : 현재 디렉토리 경로를 알려준다

mv : 파일을 이동시킨다

mv /home/user/test.txt /home/kim #이동할파일 이동시킬 위치

cd : 해당 디렉토리로 이동한다

cd /home/user  #/home/user으로 이동
cd ..  #상위디렉토리로 이동

./ 파일명 or  확장자 파일명 : 파일실행

./ test.sh 
sh test.sh

sh /home/user/test.sh

'Programming > Shell Script' 카테고리의 다른 글

[Bash] 변수 취급방법  (0) 2023.07.12
[bash] Shell Script 기본적인 코드 작성법  (0) 2023.07.10
[Bash] Shell Script 문법  (0) 2023.07.05

+ Recent posts