[bash질문] 변수참조<->문자열그대로 읽기 왔다갔다 할수

hoollahoop의 이미지

${KKK}가 환경변수라서 안에 값이 있습니다.
한번은 문자열 그대로 읽고 싶고, 또 나중에는 변수값으로
읽고 싶습니다. 어떻게 해야 하나요...

#!/bin/sh

t='${KKK}'

if [ ${t:0:1} = '$' ]
then
echo $t
fi
echo $t

netj의 이미지

hoollahoop wrote:
${KKK}가 환경변수라서 안에 값이 있습니다.
한번은 문자열 그대로 읽고 싶고, 또 나중에는 변수값으로
읽고 싶습니다. 어떻게 해야 하나요...

#!/bin/sh

t='${KKK}'

if [ ${t:0:1} = '$' ]
then
echo $t
fi
echo $t

$KKK에 변수 이름이 들어있다는 말인가요?
${!KKK}와 같이 쓰면 KKK에 든 값에 해당하는 이름의 변수의 값을 꺼낼 수 있습니다.

a=b
b=c일 때,
echo ${!a}는
echo $b와 같고
echo c와 같습니다.
c가 찍히죠.

hoollahoop의 이미지

netj wrote:
hoollahoop wrote:
${KKK}가 환경변수라서 안에 값이 있습니다.
한번은 문자열 그대로 읽고 싶고, 또 나중에는 변수값으로
읽고 싶습니다. 어떻게 해야 하나요...

#!/bin/sh

t='${KKK}'

if [ ${t:0:1} = '$' ]
then
echo $t
fi
echo $t

$KKK에 변수 이름이 들어있다는 말인가요?
${!KKK}와 같이 쓰면 KKK에 든 값에 해당하는 이름의 변수의 값을 꺼낼 수 있습니다.

a=b
b=c일 때,
echo ${!a}는
echo $b와 같고
echo c와 같습니다.
c가 찍히죠.

답변 감사합니다..
${KKK}에는 변수가 들어있는 것이 아니라 어떤 문자열이 들어있습니다..

${HOME}으로 예를 들면
제가 원하는 결과값은 다음과 같습니다.

${HOME} <-- 문자열 그대로..
/home/myaccount <-- 환경변수에 들어있는 값(문자열)

일반 변수에는 말씀하신것 처럼 잘 됩니다만
앞에 $가 붙어있으면 처리하기가 좀 힘드네요..

아무도 안볼거 같은 예감이.. ^^;
쉬운거 같은데도 못하겠네요 ㅠ.ㅠ

Fe.head의 이미지

[ch.leem@will ~]$ echo ${HOME}
/home/ch.leem
[ch.leem@will ~]$ echo \${HOME}
${HOME}

이걸 말씀하시는건가요?

고작 블로킹 하나, 고작 25점 중에 1점, 고작 부활동
"만약 그 순간이 온다면 그때가 네가 배구에 빠지는 순간이야"

hoollahoop의 이미지

fehead wrote:
[ch.leem@will ~]$ echo ${HOME}
/home/ch.leem
[ch.leem@will ~]$ echo \${HOME}
${HOME}

이걸 말씀하시는건가요?


답변 감사합니다..
제 질문이 명확하지가 않은거 같네요.. 죄송합니다.
콘솔에서 그냥 echo 로 하면 잘 되겠지만..
아래 같은 경우, t에 이미 ${HOME}라는 문자열로
들어가버렸기 때문에 처리가 어렵습니다. ㅠ.ㅠ
제가 뭔가 잘못알고 있는건지...

조언 부탁드립니다.

#!/bin/sh

t='${HOME}'

if [ ${t:0:1} = '$' ]
then
echo $t <-- 여기서는 그냥 ${HOME}으로 출력
fi
echo $t <-- 여기서는 /home/myaccount로 출력 하고 싶습니다ㅠ.ㅠ

ganadist의 이미지

이거 말씀인가요?

[ganadist@tkp ~]$ t='${HOME}'
[ganadist@tkp ~]$ echo $t
${HOME}
[ganadist@tkp ~]$ eval echo $t
/home/ganadist

----
데스크탑 프로그래머를 꿈꾸는 임베디드 삽질러

최종호의 이미지

뭔가 다른 쉘구문이 있을 듯 한데, 그냥 말씀하신 일만 하신다면

#!/bin/bash

t='${HOME}'

if [ ${t:0:1} = '$' ]
then
    echo $t
fi
echo `eval echo $t`

도 원하는 결과를 돌려주네요.

hoollahoop의 이미지

ganadist님, 최종호님 감사합니다.

eval을 이용해서 해야하는군요..

다시 한번 감사드립니다.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.