bash 스크립트 perl 문자열 추가 안되는부분이 있어서요...

rhehfl2의 이미지

vi 편집기를 이용하여 변수 하나를 초기화하고
#!/bin/bash
a=
read a

perl -pe '$.==6 and print" ${a}\n"' x.txt > y.txt

이부분에서 계속 에러가 발생하더군요

$a도 안되고 "$a" 도 안되고

어떻게 써야 저 a를 먹일수 있을까요....

dgkim의 이미지

쉘에서 받은 값을 환경변수로 perl에서 가져가는 방법을 써볼 수 있습니다.

#!/bin/bash
 
a=
read a
 
export a
 
perl -pe '$.==6 and print "$ENV{a}\n"' x.txt

http://www.perlmonks.org/?node_id=684685 www.perlmonks.org/?node_id=684685

raymundo의 이미지

원하시는 게 맞는지 모르겠는데 잘 되는 것 같은데요.
내가 입력한 게 x.txt의 6행 출력되기 전에 삽입되어 나오게 하시려는 거죠?

#!/bin/bash
a=
read a
 
perl -pe '$.==6 and print" '${a}'\n"' x.txt

좋은 하루 되세요!

rhehfl2의 이미지

안되네요 ㅜㅜ

제가 정확히 추가할려는게
perl -pe '$.==6 and print" $serverNum\n"' serverchange.plist > b.plist

이부분인데, 윗 두분이 적어주신대로 해봤는데도 에러가 발생하네요 ㅜㅜ

raymundo의 이미지

글쎄요, 제대로 되는 거 확인하고 답글을 단 거라서....

"적어주신대로 해봤는데도 에러가 발생한다"라는 말씀만 하시면 더이상 해 볼 방도가 없습니다.

정확히 어떻게 했는지 코드와, 저 serverchange.plist 파일의 샘플과, 에러메시지를 적어주셔야
하다못해 다른 사람이 보고 '아 그 에러는 이래서...'하고 끼어들 여지가 있겠죠.

좋은 하루 되세요!

rhehfl2의 이미지

상황은

plist에 있는 코드를 변경하는 것이었고 그것을 실행할 bash 스크립트는

read serverNum
sed '6d' ServerList.plist > ServerChange.plist
perl -pe '$.==6 and print" '${serverNum}'\n"' serverchange.plist > b.plist
입니다.

변경할려는 원본 파일은
<?xml version="1.0" encoding="UTF-8"?>



curKey
1_1
hostList

.....

에서 보이는 1_1 입니다.

이부분에서 1_1을 입력받은 스트링으로 저장할려고 저 방식을 썼었는데, 2를 입력시

2
auto: line 14: syntax error near unexpected token `perl'
auto: line 14: `perl -pe '$.==6 and print" '${serverNum}'\n"' serverchange.plist > b.plist'

이런식의 에러가 발생합니다.

이 부분을 어떻게 해야 되는지 부탁드립니다....

좋은하루되세요~

raymundo의 이미지

어... 지금 적어주신 저 스크립트를 마우스로 그대로 긁어서 해봤는데도 저는 아주 잘 동작하네요... =ㅅ=;;;
(단 키보드로 입력한 스트링에 따옴표가 포함되면 그게 엉키면서 문제가 되는군요)

영문은 모르겠고, 그냥 머리에 떠오르는 것들만 적어보면

syntax error 가 나는 걸로 봐서 (그리고 스크립트 행번호가 14까지 진행되어 있는 걸로 봐서)
스크립트의 다른 부분에 잘못된 게 있거나... (bash는 띄어쓰기 이런 데에도 민감한 곳이 있으니까요)

아니면 bash가 아니라 오리지널 sh를 띄우고 있거나 (제 환경에서는 sh는 bash의 심볼릭링크라서, 제가 테스트해볼 수 없네요)

스크립트에 눈에 안 보이는 특수문자(윈도우 개행 문자에 포함되는 \r 같은?)가 들어 있어서 영향을 끼치고 있거나...

뭐 이 정도네요.

뭐가 문제였는지 저도 궁금하니 해결되시면 적어주시면 감사하겠습니다 ^^;

좋은 하루 되세요!

rhehfl2의 이미지

그대로 복사해서 새 파일에 만들어서 적용시키니 되더군요 =ㅅ=;;;;

그래서 그걸 다시 그부분만 그대로 원 파일에 붙여넣었더니 되었습니다.;;;;;;;;;;; ㅡㅅㅡ;;

의심해볼만한건 띄어쓰기나 "였는데..... 어찌 해결된건지 잘 모르겠네요 ㅜㅜ

계속 답변 주셔서 감사합니다 ^ㅡ^

좋은 하루 되세요!!!

댓글 달기

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