쉘 스크립트 질문입니다 -_ㅠ

babomose의 이미지

먹고 살기위해 쉘스크립트를 못하지만 닥쳐서 하고 있는 초보입니다. -_ㅠ

유닉스 쉘 바이블을 보면서 다른 사람이 만들어 놓은 스크립트를 해석하고 정리해야 하는데요.

NOTE : script는 콘쉘로 짜여져 있습니다.
아래는 script의 일부분입니다. INT0, 1은 이미 integer로 선언되어 있습니다.

# check ftp and anonymous user
INT0=`cat /etc/passwd | grep -E "anonymous|ftp" | wc -l`
INT1=`netstat -a | grep ftp | grep LISTEN | wc -l`

AFTP_USER_CAN_LOGIN="YES"

# if ether of ftp or anonymous id exists then check ftp login possibility.
if [ ${INT1:--1} -eq 0 ]
then
AFTP_USER_CAN_LOGIN="NO"
elif [ ${INT0:--1} -ne 0 ] # ftp or anonymous id exists
then
TEMP_FILE="${DIR}/${HOSTNAME}_FTP_CHECK_OUT_${DATE_TIME}.tmp"

스크립트의 의도는 알겠는데 위의 항목에서 if ${INT1:--1} 의 값이 정확히 이해가 안됩니다.
IF문으로 값을 비교를 할 때INT1의 값이 1이었다면 ${INT1:--1}의 결과는 --1의 증감 연산자에 의해서 0이되는건가요?
INT1의 값이 0이된다면 IF문을 통해 비교 할 때만 0이 되는 것인지 아니면 변경전까지 쭈욱 INT1의 값은 0이 되는 것인지 궁금합니다.

*질문정리
ex)
${변수:++1} => 이렇게 하면 변수의 숫자값이 1증가하는건가요??
${변수:--1} => 이렇게 하면 변수의 숫자값이 1감소하는건가요??

만약 그렇다면 그 값은 바로 증가되고 감소 되는지 또 위의 IF에 들어갈 경우에는 비교될 당시에만 감소 혹은 증가하는지 궁금합니다.

고수님들 도와주세요 -_ㅠ 간단한 것 같은데 책을 뒤져봐도 잘 안나오내요....
간단한건데 안풀리니까.. 뒷골까지 땡기내요 으흑..

eseo의 이미지

bash 와 유사하리라 보고 적습니다.

${변수:++1} => 변수가 설정되어 있으면 "+1" 을 변수값으로 둔다.
${변수:--1} => 변수가 설정되어 있지 않으면, "-1" 을 변수값으로 둔다.

위와 같이 변수값의 증감과는 상관이 없습니다.

보다 상세한 설명은 검색엔진에서 "ksh 매개변수치환" 으로 찾아보세요.

---
배려하는 마음을 갖자.

babomose의 이미지

매개변수치환!!이라고 하는군요!! 용어를 몰라 찾기가 힘들었었는데 감사합니다!

oneday의 이미지

이런건 echo 직접 찍어서 테스트를 해보시면 될듯 한데요 ?
간단한 테스트용 쉘을 만들어서 해보시는게 제일 빠를 듯 합니다.

babomose의 이미지

echo로 해보기는 했는데 확신이 없고 정확한 결과인지 긴가민가해서 질문을 했었습니다. :-)
감사합니다!

댓글 달기

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