shell script에서 명령어에 따른 실행하는법 알려주세요 ㅠ

jin24512의 이미지


제가 wget으로 파일을 받아서 실행을 하고 로그파일을 남기는 것까지 공부를 했는데요...
sh파일을 실행할때(shell.sh),
#./shell.sh ab 를 실행하면 ab에 해당하는 스크립트안의 명령이 실행되고,
#./shell.sh cd 를 실행하면 cd에 해당하는 스크립트안의 명령이 실행되게 하려고하는데..
인자값 설정을 하라는 글을 봤는데...도저히 알수가 없네요 ㅠㅠ

어떻게 하는지 조언좀 부탁드립니다 ㅠ
예제를 주셔도 감사하구요! 예저 보고서 공부할께요!!!

매그넘의 이미지


cmd=$1

if [ "$cmd" = "ab" ];then

# ab에 해당하는 명령
elif [ "$cmd" = "cd" ];then

# cd에 해당하는 명령.
fi

jin24512의 이미지


"$cmd" = "ping 11.11.11.11" 이런식으로 명령어를 넣는건가요? ㅠㅠ

아니면 cmd=$1 이부분을 바꺼주는건가요? ㅠㅠ
잘 안되네요 ㅠㅠ ping으로 바꺼 봤는데 ㅠㅠ

qiiiiiiiip의 이미지

cmd="ping 11.11.11.11"
$cmd

이렇게 하면 됩니다.

외부에서 받은 명령어를 실행하고 싶을때는

cmd=$1
$cmd

이렇게 하면되고요..

심지어

$1

이렇게만 해도 될겁니다.

쉘스크립트를 할때는, 공백이나, 따옴표도 유심히 봐야합니다.

jin24512의 이미지


아아...ㅠㅠ
#!/bin/bash

cmd="ping 192.168.10.12"

if ["$cmd"="ab"];then

elif ["$cmd"="cd"];then

fi
제가 한번 바꺼는 봐는데요 이런식으로 하는게 아니였던가요? ㅠㅠ
ab는 10.12번을 핑을 보내고 cd는 200번으로 핑을 보내고 싶은뎅...
쉽지가 않네요 ㅠㅠ

매그넘의 이미지

#!/bin/bash
 
cmd=$1
 
if ["$cmd"="ab"];then
  ping 192.168.10.12
elif ["$cmd"="cd"];then
  ping 192.168.10.200
fi
<code>
jin24512의 이미지

#./shell.sh ab
./inza.sh: line 5: [ab=ab]: command not found
./inza.sh: line 7: [ab=cd]: command not found

이런식으로 나오네요 ㅠㅠ
같은 코드를 적용해는데도 왜이러죠? ㅠㅠ

자세히 알려주시는데 이해 못해서 죄송합니다..ㅠㅠ

qiiiiiiiip의 이미지

미리 말씀드린대로 공백을 주의 깊게 보셔야합니다..

if [ "$cmd" = "ab" ]; then
jin24512의 이미지

공백을 주의깊게(?) 써넣었더니...
오류 메세지는 없어졌는데요.....
음..명령어 넣어논게 실행을 안하는건지 아무것도 출력이 돼질 않네요 ㅠㅠ

여기서 부터 다시 고민해 보겠습니다! 감사합니다!!!

매그넘의 이미지

./a.sh a b c

이렇게 실행을 시키면

스크립트 내부에서

a b c 순서대로

$1 $2 $3 변수로 참조할 수 있어요.

raymundo의 이미지

지금 보니까... 다른 분이

cmd=$1

이렇게 답을 알려주셨는데, 왜 이걸 자꾸

cmd="ping 192.168.10.12"

이렇게 바꾸시나요?

$1 이게 이 자체로 변수의 이름입니다. 실행할 때 실행스크립트 이름 뒤에 따라오는 인자 (명령행 인자라고 부르는) 중에 첫번째 인자가 $1, 두번째 인자가 $2, 이런 겁니다.

따라서

#./shell.sh ab 

이렇게 실행을 하면 shell.sh 안에서는 $1에 "ab"라는 문자열이 들어간다는 얘기죠.

좋은 하루 되세요!

댓글 달기

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