ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Ubuntu/Linux] 쉘스크립트 인용부호의 모든 것
    IT 2015. 7. 13. 00:00

    쉘스크립트 설명에 인용부호를 빼먹을 수는 없지요.

    명령 프롬프트에 남길 수 있는 인용부호가 세 종류나 되기 때문에 꼭 짚고 넘어가야 합니다.

    작은 따옴표, 큰 따옴표, 역 따옴표.

    위의 따옴표 삼형제는 쓰임이 모두 다릅니다.

    각각의 인용부호에 대한 정의를 분명하게 확인하지 않으면 낭패볼 일이 있을지도 모릅니다.



    화면에 스트링을 출력하기 위해서는 echo 명령어를 이용합니다.

    $ echo string
    string
    $ echo "string"
    string

    echo에 큰 따옴표를 하든 하지않든 모두 string을 출력해줍니다.


    하지만 큰 따옴표를 출력하려면 어떻게 해야할까요?

    위의 두 번째 예에서 큰 따옴표가 출력되지 않은 것은 확인했습니다.

    큰 따옴표를 출력하기 위해서는 아래 세 가지 중 하나를 택하면 됩니다.

    $ echo "\""
    "
    $ echo \"
    "
    $ echo '"'
    "

    역슬래시를 사용하여 큰 따옴표를 출력하거나,

    작은 따옴표로 큰 따옴표를 감싸서 출력할 수도 있네요.


    그러면 바로 위의 예에서 쓰인 백슬러시는 어떻게 출력해야하는 것일까요?

    백슬러시도 위와 유사한 방법으로 출력하면 됩니다.

    $ echo "\\"
    \
    $ echo \\
    \
    $ echo '\'
    \


    위의 예에서 알 수 있는 사실이 있습니다.

    작은 따옴표로 감싸진 문자열은 변화없이 그대로 출력됩니다.

    설사 큰 따옴표 자신이나 백슬래시라 할지라도 문자변환 없이 작은 따옴표 안에 있는 모습 그대로입니다.


    이제 작은 따옴표를 출력해보겠습니다.

    작은 따옴표는 아래 두 가지 방식으로 출력할 수 있습니다.

    $ echo \'     # echo \"와 유사
    '
    $ echo "'" # echo '"'와 유사하고 echo "\""와도 유사
    '

    먼저 언급한 큰 따옴표의 출력과 유사하지만 하나 다른 점이 있습니다.

    바로 큰 따옴표와 역슬래시 조합이 없네요.

    위의 조합으로 출력하면 아래와 같은 결과가 나옵니다.

    $ echo "\'"
    \'

    분명 echo "'"와 "\'" 둘 중 하나를 선택해서 '를 출력하게 결정해야 했겠지요.

    그 중에 가장 경제적인 선택을 했을겁니다.

    그래서 "'"가 '를 나타내는 것으로 확정했으리라 추정하고 있습니다.


    하지만, 제 소견으로 생각하건데,

    어쩌면 논리적으로는 "\'"를 선택했어야하지 않았을까란 생각도 듭니다..


    작은 따옴표는 작은 따옴표 안에 있는 것을 가급적 그대로 출력합니다.

    변수를 작은 따옴표 내에서 출력하면 변수명 그대로 출력이 됩니다.

    $ echo '$HOME'
    $HOME


    이에 반해 변수를 큰 따옴표 안에 넣으면 변수가 실제 값으로 치환된 후 출력됩니다.

    $ echo "$HOME"
    /home/storycompiler


    역 따옴표는 따옴표 안에 있는 명령문의 실행하여 실행결과를 대입합니다.

    $ echo The working directory is `pwd`
    The working directory is /home/storycompiler
    $ echo "The working directory is `pwd`"
    The working directory is /home/storycompiler

    위처럼 `pwd`의 결과값이 나옵니다.


    하지만, 아래의 경우에서는 역따옴표가 제대로 동작하지 않아 의도한 값이 출력되지 않습니다.

    $ echo 'The working directory is `pwd`'
    The working directory is `pwd`
    $ echo 'The working directory is \`pwd\`'
    The working directory is \`pwd\`
    $ echo "The working directory is \`pwd\`"
    The working directory is `pwd`

    역따옴표는 역따옴표 자체를 사용해야 의미가 있습니다.

    백슬래시로 역따옴표를 막는다면 제대로 동작하지 않겠죠.


    간단하게 인용부호를 살펴봤습니다.

    그럼 좋은 하루 보내세요~

    끝_


    * References

    http://www.grymoire.com/Unix/Sh.html#uh-6

Designed by Tistory.