bash 프로그래밍 질문입니다. ^^

jykimi의 이미지

안녕하세요 bash로 프로그래밍을 하는데 이해가 안되는 부분이 있습니다.
아래와 같은 아주 짧은 문인데...이상하게 순서를 꼭 이렇게 해야 -n, =, != 순으로 검사를 해야 제대로 작동을 하는 것 같습니다. if문에서 순서가 있는 건가요? 아님 제가 어딜 잘못해서 그런건가요?
--; 고수 여러분의 조언 부탁드립니다.
------------------------------------------------------------------------
#!/bin/bash
echo -n "Choose vob which $rlb exits [xgw, cpsw] : "
read avob
if test -z $avob ; then
echo "Warning : Write correct vob name is -z if"
elif test $avob = "xgw" -o $avob = "cpsw"; then
echo "xgw or cpsw"
elif test $avob != "xgw" -o $avob != "cpsw" ; then
echo "Warning : Write correct vob name, is ! state"
fi

Fe.head의 이미지

jykimi wrote:

test $avob != "xgw" -o $avob != "cpsw" ; then
     echo "Warning : Write correct vob name, is ! state"
 fi

이부분이 or (-o) 가 아니고 and (-a) 여야 맞습니다.

test $avob != "xgw" -a $avob != "cpsw" ; then
     echo "Warning : Write correct vob name, is ! state"
 fi

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

netj의 이미지

jykimi wrote:
안녕하세요 bash로 프로그래밍을 하는데 이해가 안되는 부분이 있습니다.
아래와 같은 아주 짧은 문인데...이상하게 순서를 꼭 이렇게 해야 -n, =, != 순으로 검사를 해야 제대로 작동을 하는 것 같습니다. if문에서 순서가 있는 건가요? 아님 제가 어딜 잘못해서 그런건가요?
--; 고수 여러분의 조언 부탁드립니다.

-z는 값이 빈 문자열인지 (-n은 뭔가 있는지) 검사하고, =, !=는 두 문자열을 비교합니다. 만약 avob에 빈 값이 들어가면 test $avob = "xgw"는 test = "xgw"와 같이 펼쳐지기 때문에 인자가 부족하다고 나옵니다. !=의 경우도 마찬가지고. -z(또는 -n)으로 먼저 검사한 후에 =나 != 하는 경우는 당연히 빈 값이 아니기 때문에 동작을 하는 거겠죠.

변수 값에 공백이 들어가거나 비어있을 수 있는 경우에는 다음과 같이 따옴표(")로 묶어주어야 합니다:

#!/bin/bash
read avob
if test "$avob" = "xgw" -o "$avob" = "cpsw"; then
    echo "xgw or cpsw"
else
    echo "Warning : Write correct vob name"
fi

댓글 달기

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.