쉘을 처음으로 접해서 연습하고 있느데
배열에서 출력할때
echo ${argc[1]}
이련 형식으로 쓰는데 배열 ${argc[1]}이 잘못된 substitution 이라고 나옵니다
해결책이나 바르게 고치는 법좀 가르쳐 주세요~~~
쉘을 처음으로 접해서 연습하고 있느데
배열에서 출력할때
echo ${argc[1]}
이련 형식으로 쓰는데 배열 ${argc[1]}이 잘못된 substitution 이라고 나옵니다
해결책이나 바르게 고치는 법좀 가르쳐 주세요~~~
argc는 파라메터의 갯수로 배열변수가 아닙니다.
argv로 바꿔서 해보세요
터미널에서 혹은 실행에서 명령으로
[code:1qeuiyik]$> ls ab.txt bc.txt[/code:1qeuiyik]라고 입력했다면
[quote:1qeuiyik]
argc = 3
argv[0] = ls
argv[1] = ab.txt
argv[2] = bc.txt[/quote:1qeuiyik]가 됩니다.
음 죄송하지만 제 질문이 잘못된것 같습니다.
페도라나 RPM 계열에선 배쉬셀 이 되는 것 같은데
우분투에서는 같은 문법이라도 에러가 납니다.
여기에 올라와 있는 글을 보면 문법이 다르지는 않은 것 같은데 우분투에서는 인식을 다르게 하는 것 같습니다
해결책 좀 주세요~~~
[quote="cmy1st":1jbofow2]음 죄송하지만 제 질문이 잘못된것 같습니다.
페도라나 RPM 계열에선 배쉬셀 이 되는 것 같은데
우분투에서는 같은 문법이라도 에러가 납니다.
여기에 올라와 있는 글을 보면 문법이 다르지는 않은 것 같은데 우분투에서는 인식을 다르게 하는 것 같습니다
해결책 좀 주세요~~~[/quote:1jbofow2]
일단, 적어도 우분투에서는 argc 코드는 bash에서 정상 작동합니다. sh로는 Bad substiution 에러가 발생합니다.
또
#!/bin/bash
argc=3 (o)
argc = 3 (x) <-에러 : 명령어를 찾을 수 없음
으로 작동합니다.
이퀄에 공백이 들어가면 에러가 납니다. 덧붙여서 argc=3…이라는건 sh
아니면 레드햇 계열에선 argc = 3 식으로 해도 정상작동 하는건가요?
간단한 검증용 코드
[code:1jbofow2]
#!/bin/bash
argc=3
echo ${argc[0]}
결과값 ~/$ 3
[/code:1jbofow2]
[quote="cmy1st":wjx1qg3q]음 죄송하지만 제 질문이 잘못된것 같습니다.
페도라나 RPM 계열에선 배쉬셀 이 되는 것 같은데
우분투에서는 같은 문법이라도 에러가 납니다.
여기에 올라와 있는 글을 보면 문법이 다르지는 않은 것 같은데 우분투에서는 인식을 다르게 하는 것 같습니다
해결책 좀 주세요~~~[/quote:wjx1qg3q]
일단 해당 쉘파일의 첫줄에
[quote:wjx1qg3q]#!/bin/sh
또는
#!/bin/bash[/quote:wjx1qg3q]어느 쉘을 사용하도록 선언되었는지 확인하시고
만약 sh를 사용하도록 되어있다면
[code:wjx1qg3q]ls -al which sh
[/code:wjx1qg3q]를 보시면 아마도 dash로 연결이 되어있을것입니다.
dash는 안되는게 좀 있습니다.
첫줄의 쉘선언을 #!/bin/bash로 바꾸면 될것입니다.
만약 bash를 사용하도록 되어있다면 … 음… 문법에 오류가 없는지 확인하는게…
[size=150:wjx1qg3q]위에 달았던 답변[/size:wjx1qg3q]은 쉘과 프로그램을 혼동해서 argc와 argv[]에대한 글을 달았습니다. ㅠ.ㅠ
참고로 쉘에서 명령어 라인 파라메터는 그냥 $# 이 갯수 $0, $1, $2 … 으로 나타냅니다.