Error : unary operator expected – 쉘스크립트 타입관련 문법

Message : ./db_migrate.sh: line 3: [: =: unary operator expected

검색해보니 정확히 같은 사례가 나와서 바로 해결

https://stackoverflow.com/questions/13617843/unary-operator-expected

리눅스 환경에 배포하다보면 shell script 사용을 할 일이 상당히 많은데…

쉘스크립트 공부해서 쓰는것도 아니고 그때그때 찾아가며 쓰다보니 자주 맞딱뜨리는 문제

이렇게 비교를 했는데

if [ $db_name = "api" ]; then

바시Bash는 이렇게 알아듣는다고

if [ = "api" ]; then

해결 – 아래의 표기법을 쓴다

따블 대괄호Braket

if [[ $db_name = "api" ]]; then

변수쌍따옴표

if [ "$db_name" = "api" ]; then

 

Linux ShellScript 이용 PATH 설정하기

#!/bin/bash

export M2_HOME=/home/archmagece/apache-maven-3.0.4
export M2=$M2_HOME/bin
export PATH=$M2:$PATH

위는 메이븐 path 설정 스크립트

이걸 그냥 실행시키면 패쓰가 잡히지 않는다.

쉘스크립트에서 export가 실행되지만 이게 쉘스크립트가 종료되면서 없어지기 때문이라고 한다.

# bash setMaven.sh
# chmod 755 setMaven.sh;./setMaven.sh
# sh setMaven.sh
# chmod 755 setMaven.sh
# ./setMaven.sh
이 방법은 안되는 방법들이다. 실행은 되지만 path가 잡히지 않는다.

 

# source setMaven.sh
# . setMaven.sh
이렇게 하면 잡힌다.

쉘스크립트는 실행시키는 방식이 두 가지