bash shell 오류

eunhd04의 이미지

sh파일은 정상적으로 실행되는데

sh파일 안에 while 문을 넣으면 오류가 발생합니다.

$!/bin/bash

n=1

while [$n -le 10]

do

echo "$n"

n=$((n=1))

done

이 파일을 실행시키면

./hello.sh: 줄 4: [1: 명령어를 찾을 수 없음

이라는 오류가 어떤식으로 바꿔도 계속 나옵니다.

오류 메세지에서 [1 은 뭘 의미하는지

또 왜 while 문이 실행되지 않는지 궁금합니다.

김정균의 이미지

일단 문법적으로 2가지 문제가 있습니다.

--- old.sh      2020-03-25 18:34:08.509808756 +0900
+++ new.sh      2020-03-25 18:34:26.010748424 +0900
@@ -1,8 +1,8 @@
-$!/bin/bash
+#!/bin/bash
 
 n=1
 
-while [$n -le 10]
+while [ $n -le 10 ]
 
 do

1. 첫행의 interpreter 호출은 $! 가 아니라 #! 입니다.
2. 조건문의 "[" 문자는 syntax 가 아니라 /bin/[ 라는 명령어 입니다. 그래서 [$var 와 같이 붙여쓰면 command not found 가 되는 겁니다.

P.S.
역 질문 입니다. 글 등록 할 때 글 본문 적는 란에 뭐라고 써 져 있지 않던가요? 글 등록이나 댓글 등록하는 입력 폼에 아무것도 적혀 있지 않나요?

황병희의 이미지

김정균 wrote:
조건문의 "[" 문자는 syntax 가 아니라 /bin/[ 라는 명령어 입니다.

대략 십년전에 FreeBSD /bin 디렉토리에 "[" 라는 실행퍼미션이 있는 파일이 있길래 한참 고개를 갸웃거리다 이상한거 아닌가 하고 확 그걸 지웠는데.. 이후 시스템이 이상한 동작을 하더이다,,, 하여간 옛날 이야기였어요~ 요즘은 "[" 보이면 그냥 냅둡니다 ㅠㅠㅠ 바보바보바보 ㅠㅠㅠㅠㅠㅠ

[우분투 18.04 파여폭스 나비에서 적어요~]

--
^고맙습니다 감사합니다_^))//

swish95의 이미지

왠만하면 저도 아는건 답 달아드리는데..

sh파일은 정상적으로 실행되는데
sh파일 안에 while 문을 넣으면 오류가 발생합니다.

이 질문글 자체부터 멘붕에 빠집니다.ㅜ.ㅠ
while 문만 빼고 명령어를 실행시켜 봤으면 좀더 질문이 간단명료 해 질 겁니다.
물론 그전에 그런 과정을 거쳤다면 shell 의 while 조건문을 검색했을테니 스스로 해결됐겠지만요

다른 커뮤니티도 마찬가지 문제가 생기더군요
질문에 대한 답은 경력자라면 금방 할수 있습니다.
하지만 질문자가 문제 해결 방법을 계속 모르게 되고 찾는 방법도 모르게 되는게 문제네요

가능한 삽질이 많을수록 경험치가 쌓이는데
포인트나 내공에 집착한 개발자들이 "고기" 만 던져주니 소위 "핑거 프린세스", "핑거 프린스" 가 양산되는 느낌입니다.

------------------------------------------------------------
ProgrammingHolic

eunhd04의 이미지

너무 급해서 질문을 올렸는데, 이후에 혼자서 몇번 해보니 금방 되더군요.
삽질을 많이 할수록 경험치가 많이 쌓인다는 말씀 새겨 듣겠습니다.

감사합니다.

익명 사용자의 이미지

kldp에는 포인트나 내공이 없어서 좋더군요. 그 이전에 저야 뭐 익명으로 활동중입니다만.

제가 초보적인 질문에 답변을 다는 이유는, 초보적인 질문이 제게 자극을 주는 경우가 많아서 그렇습니다.

옛날부터 타성에 젖어서 습관처럼 써 왔던 테크닉에 의문이 제기된다던가, 이전에 깊게 생각해 보지 않았던 어떤 다른 관점이 제시된다던가.

그리고 "알던 내용"이라고 해도, 그걸 남에게 설명하려고 시도하려는 과정에서 사실 제가 그걸 충분히 이해하지 못하고 있었다는 걸 깨닫게 되기도 하거든요.

답변을 쓰려고 최신 레퍼런스를 찾아보다 보면 뭔가 새로운 걸 알게 되는 계기가 되기도 하고요.

질문자들에게 문제를 스스로 해결할 기회를 박탈하고, 핑거 프린세스/프린스를 양산한다는 지적에 대해서는...

음. 그거 제가 책임져야 할 문제입니까? 글쎄요...

swish95의 이미지

그걸 답변다는 사람이 책임져야 된다고 한적 없는데요?
선한의도에서 나온 행동이 그렇지 못한 결과를 불러 올수도 있다 정도로 보면 되겠죠

------------------------------------------------------------
ProgrammingHolic

익명 사용자의 이미지

제가 귀하의 의견에 반박하고 있다고 생각하실 필요는 없을 것 같습니다. 어느 정도 동의하고 있으니까요.

어쨌거나, 전 딱히 제가 선한 의도로 행동하고 있다고 생각하지 않습니다.

제 답변이 기술적으로 올바르기만 하다면, 그 이후에 어떤 결과를 불러일으킬지 별로 관심도 없고요.

댓글 달기

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