프로그래밍/리눅스 프로그래밍

[bash] 가장 혼란 스러운 문법정리

jinkwon.kim 2018. 3. 8. 14:01
728x90
반응형

[ 변수 정리 ]

1. ${variable} 과 $variable 의 차이 점 

 - ${variable}을 사용시 변수에대한 직접 적인 세부 조작이 가능한다. 

array="TEST" 

echo "$array:0:1"   => 결과 : TEST:0:1

echo "${array:0:1}" => 결과 : T

 

[ 비교 문 정리 ] 

1. 문자열 비교  

 if [ ${variable} = 10 ]  VS  if [ "${variable}" = 10 ] 

 - 차이 전혀 없다

 - 문자 비교 연상자 " = != " 사용시 양쪽 모두 string으로 인식하여 처리하기 때문이다.

 - 나름의 권고 : 문자 비교시 ""를 붙이자.

 

2. 숫자 비교 

 if [ ${variable} -eq 10 ] VS 

 if [ ${variable} -eq "10" ]  VS 

 if [ "${variable}" -eq 10 ] VS 

 if [ "${variable}" -eq "10" ] 

 - 차이 전혀 없다. 

 - 숫자를 비교하는 비교 연산자, -eq , -gt -lt 에서는 양쪽 피연산자를 모두 숫자로 인식하여 하기 떄문이다.

 - 나름의 권고 : 숫자 비교시 ""를 붙이지 말자 

 

3. 파일 비교 

 * 파일 명이 info.cfg 라 할때

 if [ -e "info.cfg" ] VS if [ -e info.cfg ] 

  - 차이 전혀 없다. 

  - 비교 대상을 모두 문자열로 인식하여 처리 하기때문이다. 

  - 나름의 권고 : 파일 비교시 모두 ""를 붙이자.

 

 

[ if 문 연산자 정리 ] 

OperatorDescription

https://ryanstutorials.net/bash-scripting-tutorial/bash-if-statements.php

! EXPRESSION The EXPRESSION is false.
-n STRING The length of STRING is greater than zero.
-z STRING The lengh of STRING is zero (ie it is empty).
STRING1 = STRING2 STRING1 is equal to STRING2
STRING1 != STRING2 STRING1 is not equal to STRING2
INTEGER1 -eq INTEGER2 INTEGER1 is numerically equal to INTEGER2
INTEGER1 -gt INTEGER2 INTEGER1 is numerically greater than INTEGER2
INTEGER1 -lt INTEGER2 INTEGER1 is numerically less than INTEGER2
-d FILE FILE exists and is a directory.
-e FILE FILE exists.
-r FILE FILE exists and the read permission is granted.
-s FILE FILE exists and it's size is greater than zero (ie. it is not empty).
-w FILE FILE exists and the write permission is granted.
-x FILE FILE exists and the execute permission is granted.
 

 

728x90
반응형