[목차]
1. 산술연상 expr, let
2. while and until loop
3. for-loop
1. 산술연상 expr, let
expr
- 정수형 산술연산(+,-,*,/,%), 논리연산(|,&), 관계연상(=,!=,>,>=,<,<=)
expr 10 + 5
expr 10 - 5
expr 5 '*' 2
expr 25 '/' 5
expr 25 % 4
x=5
expr $x > 4
espr $x = 8
sum=`expr $x + 10`
type expr
let
- 정수형 산술연산, bit연산(<<,>>,&,|), 논리연상(&&,||), 단항연산(++,+=,-+)
let sum=x+5
let x++
let x+=1
type let
((sum=x+5))
((x++))
((x-=1))
2. while and until loop
조건부 loop
whlie
- while 다음의 command가 성공하는 동안 do~done 사이의 명령어를 반복 실행
while 조건명령어
do
반복명령어
done
num=1
while test $num -le 5
do
echo Number: $num
((num++))
done
until
- until 다음의 command가 성공할 때 까지 do~done 사이의 명령어를 반복 실행
until 조건명령어
do
반복명령어
done
num=1
until test $num -gt 5
do
echo Number: $num
((num++))
done
- getent passwd [유저명] : /etc/passwd 파일에서 유저를 검색
# '&>' 는 표준입력과 표준에러를 모두 리다이렉트한다는 의미
getent passwd jack &> /dev/null
echo $?
# 2
cat > newuser
#!/bin/bash
#Description: Create a user account.
echo -n "New username: "
read username
while getent passwd $username &> /dev/null
do
echo "Sorry, that account $username is already taken. Please pick a different username."
echo -n "New username: "
read username
done
sudo useradd -m -s /bin/bash $username
chmod +x newuser
- 문제풀이
newuser 스크립트를 참고하여 until 명령어를 사용하여 계정 삭제하는 스크립트 작성하기
cat > remove-user
#!/bin/bash
echo -n "username to remove: "
read username
until getent passwd $username &> /dev/null
do
echo "username does not exist."
echo -n "username to remove: "
read username
done
sudo userdel $username
chmod +x remove-user
- while loop과 if 문을 함께 사용한 예제
cat > while-if.exam
#!/bin/bash
num=0
while [ $num -lt 5 ]
do
echo "Number: $num"
((num++))
if [[ "$num" == '2' ]];then
break
fi
done
3. for-loop
- 주어진 list 만큼 do~done 사이의 명령어를 반복 실행
for item in [LIST]
do
[COMMANDS]
done
- 사용 형식
for NUM in 1 2 3 4 5 6 7 8 9 10
do
echo $NUM
done
for NUM in $(seq 10)
do
echo $NUM
done
# '*' : 현재 디렉토리 안에 있는 모든 파일
for file in *
do
ls $file
done
if [ ! -d ~/backup ]
then
mkdir ~/backup
fi
for FILE in *
do
cp $FILE ~/backup/$FILE.old
done
- 문제풀기
작업 디렉토리를 입력 받아 해당 디렉토리에 파일의 수와 디렉토리 수를 출력하는 프로그램 작성하기
cat > lab9.sh
#!/bin/bash
echo -n "Input a directory name: "
read dirname
until [ -d $dirname ]
do
echo "It is not a directory."
echo -n "Input a directory name: "
read dirname
done
echo "--------------------------"
echo $dirname :
echo "echo files: $(ls -l $dirname | grep ^- | wc -l)"
echo "echo dirs: $(ls -l $dirname | grep ^d | wc -l)"
echo "--------------------------"
chmod +x lab9.sh
- 출처 : 따배셸
9. looping
728x90
반응형
'개발 > Linux' 카테고리의 다른 글
bash shell branching (조건문) (0) | 2023.01.02 |
---|---|
Bash Shell 입출력 (echo, read, printf) (0) | 2023.01.02 |
Bash Shell Positional Parameters (위치 매개변수) (0) | 2023.01.02 |
Bash Shell Script (셸 스크립트와 작성법) (0) | 2022.12.30 |
Bash shell과 Rules(기능) (0) | 2022.12.30 |