[완료] shell script 질문 입니다..

hyper9의 이미지

예를 들어 hda: 1000 MB 라는 출력문 중에서
size라는 변수에 1000만을 가져다 대입시켜 놓으려면
어떻게 해야하는 걸까요?

기초적인 걸 잘 몰라서 죄송하지만 질문 드립니다.

hyper9의 이미지

다시 부탁드릴게요 ^^

keizie의 이미지

$ cat > t.sh
#!/bin/sh
echo $2
$ echo hda: 1000 MB | xargs sh t.sh
1000

ymir의 이미지

echo "hda: 1000 MB" | cut -d' ' -f2

되면 한다! / feel no sorrow, feel no pain, feel no hurt, there's nothing gained.. only love will then remain.. 『 Mizz 』

되면 한다! / feel no sorrow, feel no pain, feel no hurt, there's nothing gained.. only love will then remain.. 『 Mizz 』

sephiron의 이미지

#!/bin/sh
A="hda: 1000MB"
B=${A:5}
echo $B

vamf12의 이미지

글쎄요 저라면 다잘라 버리겠습니다. SIZE라는 것은 어짜피 숫자일테니까요

B=`echo "hda: 1000MB" |tr -d "A-z: "`
hyper9의 이미지

덕분에 다양한 정보를 얻을 수 있었네요 ^^

한 가지 더 추가로 질문하고 싶은 것이 있는데요.

if test -b /dev/hda ; then
[ do something ]
fi

와 같은 문장에서 첫번째 줄의 의미가 정확히 어떤 건지를
잘 모르겠더라고요..

도움 부탁드려도 될까요? ^^

ymir의 이미지

http://kldp.org/HOWTO/html/Adv-Bash-Scr-HOWTO/index.html
가볍게 한번 읽어 보시는게 빠르겠군요..

-b 에 대한 설명은
http://kldp.org/HOWTO/html/Adv-Bash-Scr-HOWTO/fto.html

되면 한다! / feel no sorrow, feel no pain, feel no hurt, there's nothing gained.. only love will then remain.. 『 Mizz 』

되면 한다! / feel no sorrow, feel no pain, feel no hurt, there's nothing gained.. only love will then remain.. 『 Mizz 』

hyper9의 이미지

좋은 자료를 알려주셨네요...

물론 위의 질문에 대한 답을 주시는 것도 환영입니다.
지금 부터 알려주신 자료를 읽어보려고 합니다..~ ^^

hyper9의 이미지

결국은 위에서 하려고 했던 일은 성공적으로 마쳤답니다.

하지만,,또 새로운 곳에서 막혀있습니다 ㅜㅜ
간단히 말씀을 드리면,,

size1=1024
size2=1024

fdisk /dev/hda 2>/dev/null 1>/dev/null << EOF
n
p
1

+1024M --> ?
n
p
2
+1024M --> ?

a
1
w
EOF

원래는 위와 같이 상수를 직접 입력해서 Shell Script상에서 fdisk를 이용한
partition작업을 하는 것인데요 ...

위에 있는 size1, size2 변수값을 이용해서 fdisk 안에 있는 상수값을 대체할
수 있는 방법이 있는지를 찾고 있습니다.

몇가지 해보는 중인데,,잘 안되네요.
조언 부탁드립니다.

vamf12의 이미지

그냥 변수 치환으로는 불가능 하던가요? 아님 변수 치환에 익숙 하지 않으신건가요...

위의 것도 두가지정도의 방법으로 해결 가능합니다. Here Document도 내부에 치환 가능하면 치환을 합니다.
문제는 +$size1M 이렇게 표기할경우 size1M변수를 치환하려고 들어서 문제 겠지요. 그렇다고 +"$size1"M이렇게 표기하면, Here Document내부에서는 ""(인용부호)까지 포함되어서 문제가 되고... 두가지정도 해결 방법이 있습니다.

1) 입력용 변수를 새로 맹글면 되지요...

input_size1=+"$size1"M

변수 대입에서는 인용부가 기본적으로 사라집니다. (\"처럼 명시적으로 사용하지 않는한 무시됩니다.)

2) 본쉘에서는 않되지만, 변수 확장시 사용할 변수명을 명시 할수 있습니다. KSH이상

${변수명}
 
fdisk /dev/hda 2>/dev/null 1>/dev/null << EOF
n
p
1
 
+${size1}M
...
hyper9의 이미지

지금 사용하고 있는 Shell이 bash이므로 2)번의 방법은 안되는거겠죠?

첫번째 방법을 사용해보려고 합니다.
위에서 설명해 주신 것처럼 새로운 변수를 만들어서 사용하려 하는데요.
새로운 변수를 만든 후에, fdisk안에 사용된 "+1024M" 자리에
"$새로운변수" 이렇게 넣으면 되는 거겠죠?

혹시 제가 잘 못 이해했다면, 다시 지적해주세요.
설명 감사합니다. ~

vamf12의 이미지

배쉬는 두가지 모두 됩니다.
본쉘 -> sh
배쉬 -> bash == 본쉘어게인

실제로 지원하는 기능은 sh << ksh << bash 입니다.

hyper9의 이미지

shell을 보다 보니까,,계속 질문이 생기네요..
이걸 이렇게 한 thread에 계속 질문을 해야하는지 좀
헷갈리기도 하지만,,,이번까지는 이렇게 질문을 드리려고 합니다..

다름이 아니고요 ~
10.20.16.60
10.20.16.61
10.20.16.62
10.20.16.63
10.20.16.64
10.20.16.65
라는 내용을 가진 file이 있습니다..IP address list입니다..

이 file을 한줄씩 읽어내서..화면에 표시해 주는 script를 다음과 같이 만들었습니다.
while read line
do
echo "$line"
done < test

잘 동작하는 것을 확인했는데요,,,

여기서 더 해보고 싶은것은,,
file안에 line들을 차례로 display하고 나면,,
다시 첫 line으로 돌아가,,다시 출력을 시작하도록 만들고
또 그것이 끝나면,,다시 첨부터 돌아가서 line을 출력하도록
만드는 것을 해보고 싶어서요..

아직 그건 해결을 못하고 있습니다.
조언 부탁드릴게요 ^^

vamf12의 이미지

엥... -_-? 무한 반복입니까? 의도하시는 바를 명확하게 이해하질 못하겠습니다. OTL

hyper9의 이미지

예를 들면 1시간동안 계속 반복시키고 싶습니다.~
하긴 1시간을 재는 방법도 좀 생각을 해야겠네요..

현재 계획은 1시간동안 반복해서 display하는 것입니다.
그럼 조언 부탁드릴게요 ^^

vamf12의 이미지

여전히 의도 하시는 바를 모르겠습니다. ㅠ_ㅠ

완전 OTL수준...

뭐 여하튼 1시간 동안 test라는 파일을 계속 반복해서 출력하고 싶다면?

dst_time=`date +%s`
dst_time=`expr $dst_time + 3600`
while [ $dst_time -ge `date +%s` ]
do
    while read line
    do
        echo "$line"
    done < test
done

while 문에 입력을 리다이렉션을 할경우 while문 종료시 입력이 닫힙니다. 따라서 다시 while문을 실행해주면 입력 재지정이 다시 처음부터 되는 효과가 있습니다.

hyper9의 이미지

항상 Shell Programming은 ,,자신이 없는 분야인데..
이번에 많은 조언을 받았네요,,

공부를 좀 열심히 해야겠다는 생각도 들고요
다시 감사드립니다..^^

댓글 달기

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