728x90
반응형

DevOps/Shell 18

Shell Script - 6, Test

다음은 테스트다. Test 는 [ 라고도 말한다. [ 는 Test라고 말한다. 일반적으로 Test는 직접적으로 불릴 일이 거의 없다. 다만 [ 로는 많이 불린다. [ 는 실제로 test의 symbolic link 이다. 그 이상 이하도 아니다. 즉, 쉘 스크립트에서 [ 를 test로 해석한다는 말과 같다. 예시를 보면서 알아보자 **재밌는게 which는 위치로 읽고 실제로 위치를 반환한다. 아재들이 좋아할듯zzzz $ type [ [ is a shell builtin $ which [ /usr/bin/[ $ ls -l /usr/bin/[ lrwxrwxrwx 1 root root 4 Mar 27 2000 /usr/bin/[ -> test $ ls -l /usr/bin/test -rwxr-xr-x 1 roo..

DevOps/Shell 2022.11.24

Shell Script - 5, Loop

이제 다양한 문자를 쓸 줄 알았으니 Loop와 같이 반복문을 알아보자 쉘 스크립트에서는 반복문도 사용할 수 있다. C 언어에서의 for를 똑같이 쓴다. 다만 형식만 다르다. for.sh #!/bin/sh for i in 1 2 3 4 5 do echo "Looping ... number $i" done 결과는?? for2.sh #!/bin/sh for i in hello 1 * 2 goodbye do echo "Looping ... i is set to $i" done 결과는?? ?? 2번째는 조금 이상하다.라고 느낄 수 있다. 하지만 argument 대로 정상적으로 들어왔다. argument를 for 문에서 정상적으로 설정해야 의도한대로 된다는 것을 명심하자 그 다음은 while 반복문이다. while..

DevOps/Shell 2022.11.23

Shell Script - 4, escape character

이전 글에서 말하다 말았던 escape character에 대해서 더 알아보자 Shell에서 특수문자, 예약된 문자를 쓰고 싶지만 예약되었기 때문에 쓰지 못하는 문자가 있을 수 있다. 그렇다면 escape 문자를 사용함으로써 쓸 수 있다. 예를 들면 “ 같은 쌍따옴표를 쓰고 싶다면 escape를 꼭 써야만 한다. 아래 예시는 다르게 출력된다. $ echo Hello World Hello World $ echo "Hello World" Hello World 하지만 따옴표는 출력되지 않는다. 이렇게 Hello "World"따옴표를 출력하고 싶다면 어떻게 해야할까? 이렇게 하면 될까? $ echo "Hello \"World\"" 따옴표가 다행히 잘 나왔다. 그렇다면 * 는 어떻게 쓸 수 있을까? wildcar..

DevOps/Shell 2022.11.23

Shell Script - 3, Wildcard

변수에 대해 일부 배웠다면 그 다음은 와일드카드, wildcard를 알아보자 wildcard (*) : asterisk 쉘 스크립트에서 엄청나게 유용하지는 않지만 알아둘만 하다. 사실 나는 많이 쓴다. 메타문자에서 *이 모든 문자라고 생각한다면 이해하기 쉽다. 만약 파일(하위 파일 포함)을 /tmp/a 에서 /tmp/b로 복사하려면 어떻게 해야하는가? html이나 txt만 옮기려면? $ cp /tmp/a/* /tmp/b/ $ cp /tmp/a/*.txt /tmp/b/ $ cp /tmp/a/*.html /tmp/b/ 만약 모든 파일들의 확장자를 .bak으로 바꾸고 싶다면..? $ mv *.txt *.bak

DevOps/Shell 2022.11.23

Shell Script - 2, Variable(1)

변수는 다른 프로그래밍 언어와 비슷하게 ‘=’을 사용하여 선언하지만 주의할 것은 space가 없이 선언해야 한다는 점이다. 또한 Shell에서는 변수의 타입은 지정하지 않는다. ** 모두 문자열로 저장됨, 하지만 숫자로도 연산할 수 있는 기능이 있음(expr) VAR=value(O) VAR = value(X) 그리고 variable은 하나의 값만 가질 수 있다. 따라서 = 뒤에는 하나의 argument만 와야 한다. 예시를 보자 var.sh #!/bin/sh MY_MESSAGE="Hello World" echo $MY_MESSAGE 실행하면 Hello World가 뜬다. 변수에 저장된 것이 echo 된다. variable로 연산도 될까? $ x="hello" $ expr $x + 1 expr: non-n..

DevOps/Shell 2022.11.21

Shell Script - 1, 작성하기

https://www.shellscript.sh/ 이 글 시리즈는 위 링크를 참조 기본 전제 $(Dollar Sign) : 현재 Command Line 환경에서 작동하고 있다는 뜻 **변수를 사용할 때도 $를 쓴다. EX) $ echo '#!/bin/sh' > my-script.sh $ echo 'echo Hello World' >> my-script.sh $ chmod 755 my-script.sh $ ./my-script.sh Hello World 위 명령들은 표준 입력을 my-script.sh 파일로 만들고 이어서 표준 입력을 파일에 추가하고 권한을 바꾸고 sh파일을 실행한 것이다. my-script.sh를 열어보면 아래와 같이 저장되어 있다. #!/bin/sh echo Hello World sh ..

DevOps/Shell 2022.11.21

Shell Script, 셸 스크립팅하기

나는 Ubuntu 환경에서의 bash Shell 이다. 알아보자 셀 스크립팅의 기본은 간단하다 아래 포맷만 지키면 된다. (prompt) command { option } { arg.. } 여러가지 환경변수들은 미리 지정되어 있다. 실제 값의 확인은 echo ${name} 으로 확인하며 미리 지정된 여러가지 값들은 아래와 같다. 변수 설명 변수 설명 HOME 현재 사용자 홈 디렉터리 PATH 실행 파일을 찾는 디렉터리 LANG 기본 지원 언어 PWD 사용자 현재 디렉터리 TERM 로그인 터미널 타입 SHELL 로그인해서 사용하는 셸 USER 현재 사용자의 이름 DISPLAY X 디스플레이 이름 COLUMNS 현재 터미널의 컬럼 수 LINES 현재 터미널의 라인 수 PS1 1차 명령 프롬프트 변수 PS2 ..

DevOps/Shell 2022.09.05
728x90
반응형