Bash if statement can be used with regular expression

if [[ "hello world" =~ "hello" ]] ## this is true
then
    echo "'hello world' has 'hello'"
fi

if [[ "hello" =~ "hello world" ]] ## this is false
then
    echo "'hello' has 'hello world'"
fi

if [[ "hello world" =~ e.* ]] ## this is true
then
    echo "'hello world' has 'e' followed by any character"
fi

Note that

 - the bracket should be double

 - use "=~", not "~="

 - use the regular expression without quotation mark

 - the lefthand-side should be a container

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

Bash script argument parsing with getopts  (0) 2020.01.23
Bash script for statement  (0) 2018.05.21
Bash Script case statement  (0) 2018.02.06
Bash Script Variable Split by Space  (0) 2018.02.04
Bash Script Echo  (0) 2018.02.04

Bash script 실행 할 때, 다양한 option에 대한 argument를 넣고, parsing 하는 방법

 

#!/bin/bash

while getopts "hvf:" shortopt
do
	case $shortopt in 
    	h)
        	echo "Usage: $0 [-h] [-v] [-f file_name]"
            	echo "    -h: help"
            	echo "    -v: verbose"
            	echo "    -f filename: input file"
            	exit
            	;;
    	v)
        	VERBOSE=1
            	;;
        f)
        	FILE=$OPTARG
            	;;
        *)
        	echo "default settings"
            	;;
    esac
done

shortopt 가 OPTARG를 가지는 경우 ":"(Colon) 을 포함하고, 그외의 경우의 알파벳을 열거하여 while 문을 구성하면 된다.

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

Bash if statement with regex  (0) 2021.09.06
Bash script for statement  (0) 2018.05.21
Bash Script case statement  (0) 2018.02.06
Bash Script Variable Split by Space  (0) 2018.02.04
Bash Script Echo  (0) 2018.02.04

Bash script에서 for문은 아래와 같은 형태를 가진다.

for <variable> in <list>

do

statements

done


C언어에서와 같이 i++을 진행하면서 하고자 하는 경우,

for i in `seq 1 10`;

do

statements

done

※seq 1 3 == 1,2,3

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

Bash if statement with regex  (0) 2021.09.06
Bash script argument parsing with getopts  (0) 2020.01.23
Bash Script case statement  (0) 2018.02.06
Bash Script Variable Split by Space  (0) 2018.02.04
Bash Script Echo  (0) 2018.02.04

Bash script 에서 case 는 아래와 같은 형태를 가진다.

case variable in

case1)

statement1;;

case2)

statement2;;

*)

statement_default;;

esac


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

Bash script argument parsing with getopts  (0) 2020.01.23
Bash script for statement  (0) 2018.05.21
Bash Script Variable Split by Space  (0) 2018.02.04
Bash Script Echo  (0) 2018.02.04
Bash Script String  (0) 2017.07.04

Bash Script 사용할 때,

shell 명령어에 대한 return을 받은 variable 이 space로 구분된 string 이라면,

아래와 같이 명령어를 배열처럼 구분하여 사용할 수 있다.

string_ex="I am your Father"

str_array=($string_ex)

echo ${str_array[0]} #I

echo ${str_array[1]} #am

echo ${str_array[2]} #you

echo ${str_array[3]} #Father


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

Bash script for statement  (0) 2018.05.21
Bash Script case statement  (0) 2018.02.06
Bash Script Echo  (0) 2018.02.04
Bash Script String  (0) 2017.07.04
Bash Script If statement  (0) 2017.07.04

Bash Script echo 사용 시 줄바꿈을 하고 싶지 않다면,

-n

$ echo -n "hello "

$ echo "world"

hello world

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

Bash Script case statement  (0) 2018.02.06
Bash Script Variable Split by Space  (0) 2018.02.04
Bash Script String  (0) 2017.07.04
Bash Script If statement  (0) 2017.07.04
Bash script argument  (0) 2017.06.20

Bash Script 에서 Script 에 관한 문법


Bash Script 에서 따로 자료형을 입력하지 않아도, initial value 가 string 형태의 경우 string 자료형으로 인식한다.


1. String Length

${#string} : string 의 길이 

expr length $string


2. Substring

${string:position} : string 의 앞에서 부터 position 의 위치 부터 string의 끝까지의 substring (position은 0부터 시작한다.)

${string:position:length} : string 의 앞에서 부터 position 위치 부터 length 길이의 substring


참조

http://tldp.org/LDP/abs/html/string-manipulation.html


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

Bash Script Variable Split by Space  (0) 2018.02.04
Bash Script Echo  (0) 2018.02.04
Bash Script If statement  (0) 2017.07.04
Bash script argument  (0) 2017.06.20
Bash script sudo 권한 체크  (1) 2017.06.19

Bash Script If statement

Bash 스크립트 if 조건문 문법

기본적으로, if / elif / else / fi 로 구성한다. 

if[] bracket 사이에는 공백이 있어야 하며, [] bracket 과 [[ ]] double bracket( ) paranthesis 는 다를 수 있으므로 주의하자.

if [ expression ]

then

statement

elif [ expression ]

then

statement

else 

statement

fi


expression 에 사용하는 Comparison 은 아래와 같다.

integer comparison

if [ "$a" -eq "$b" ]  : 같음(equal to)

if [ "$a" -ne "$b" ]  : 다름(not equal to)

if [ "$a" -lt "$b" ]  : 작음(less than)

if (( "$a" < "$b" ))

if [ "$a" -gt "$b" ] : 큼(greater than)

if (( "$a" > "$b" ))

if [ "$a" -le "$b" ] : 작거나 같음(less than or equal to)

if (( "$a" <= "$b" ))

if [ "$a" -ge "$b" ] : 크거나 같음(greater than or equal to)

if (( "$a" >= "$b" ))


string comparison

if [ "$a" == "$b" ]  : 같음(equal to)

if [ "$a" = "$b" ] ※ = 양쪽 모두 빈 칸 이여야 함

if [ "$a" != "$b" ]  : 다름(not equal to)

if [ -z "$a" ] : string 이 null 이 아님(즉, 0이 아닌 길이가 있는 string)


if statement 에 not 을 사용하고자 하는 경우 ! 를 사용하면 된다.

if ! [ "$arg" -eq "matching" ]

then

echo "Not matched with the first one"

fi


If statement 를 사용해 file 존재 유무 확인

if [ -d <DIR> ] : Directory 가 존재

if [ -f <FILE> ] : 파일이 존재하며, directory 가 아님

if [ -x <FILE> ] : 파일이 실행 가능함

if [ -f test.c ]

then

echo "File test.c exists!"

else

echo "File test.c does not exist"

fi


If statement  Logical AND, OR 문법

if [[ condition1 && condition2 ]] : Logical AND

if [ condition1 ] && [ condition2 ]

if [ condition1 -a condition2 ]

if [[ condition1 || condition2 ]] : Logical OR

if [ condition1 ] || [ condition2 ]

if [ condition1 -o condition2 ]

if [[ condition1 && condition2 ]] || [[ condition3 && condition4 ]]

then

echo "Condition (1 AND 2) OR (3 AND 4)"

fi



참조

http://tldp.org/LDP/abs/html/comparison-ops.html

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

Bash Script Variable Split by Space  (0) 2018.02.04
Bash Script Echo  (0) 2018.02.04
Bash Script String  (0) 2017.07.04
Bash script argument  (0) 2017.06.20
Bash script sudo 권한 체크  (1) 2017.06.19

Bash script 실행 할 때 Arguments 를 넣는 방법


C/C++ 에서 와 마찬가지로 Argument 순서대로 1, 2, 3, ... 으로 들어간다.(0번은 실행 스크립트 파일 이름)

달러+번호 가 해당 argument에 해당하며, argument 총 갯수는 $#으로 반환된다(여기서 argument의 총 갯수는 실행 스크립트 argument를 제외한 순수 argument 들의 갯수이다.)

실행 스크립트는 0번째 argument, 즉, $0가 된다.

if [ $# -ne 2 ]

then

echo "please input arguments"

echo "Usage:$0 <input1> <input2>

exit

fi


arg1=$1

arg2=$2


파일로 부터 읽어, Argument 를 전달 할 수 도 있다.

while read line

do 

echo $line

./script $line

done < $file


※ Bash script 내 에서 실행하는 다른 script 또는 다른 실행 파일로 print 를 하는 경우 argument 로 전달 될 수 있음


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

Bash Script Variable Split by Space  (0) 2018.02.04
Bash Script Echo  (0) 2018.02.04
Bash Script String  (0) 2017.07.04
Bash Script If statement  (0) 2017.07.04
Bash script sudo 권한 체크  (1) 2017.06.19

Bash script 를 sudo 권한으로 실행하는지 여부를 확인하고자 하는 방법은 아래와 같다.

if [ $EUID -ne 0 ]

then

echo "please run as root"

exit

fi

$EUID 는 Effective User ID 로 0 인 경우 root 를 나타낸다.


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

Bash Script Variable Split by Space  (0) 2018.02.04
Bash Script Echo  (0) 2018.02.04
Bash Script String  (0) 2017.07.04
Bash Script If statement  (0) 2017.07.04
Bash script argument  (0) 2017.06.20

+ Recent posts