쉘 스크립트를만들어 다른 화일의 특정내용을 수정하는문제...

kimyh의 이미지

펄 스크립트를 공부 하고 있습니다.
지금 aaa.php 화일의 내용이
<?php
$memberid = "";
$memberpasswd = "";
?>

라는 화일이 있을때 bbb.sh 화일을 아래와 같이 만들어

#!/usr/bin/perl
 
print ("\ndnsname domain : <a href="http://dnsname.kr" rel="nofollow">http://dnsname.kr</a> \n");
print ("아래의 폼에 회원 아이디와 패스워들 입력해 주세요. \n\n");
print ("Member id = ");
$memberid = <stdin>;
print("Memberid : ", $memberid);
print ("Member password = ");
$memberpasswd = <stdin>;
print("Memberpassword : ", $memberpasswd);

회원 아이디 xxxxx 와 회원 패스워드 yyyyy 가 입력되면 aaa.php 화일을 불러내서 aaa.php 화일의 내용이

<?php
$memberid = "xxxxx";
$memberpasswd = "yyyyy";
?>

로 변경하게 할려고 합니다.
화일을 아래와 같이 불러낼수는 있겠는데 그 다음부터 어떻게
1번 라인과 2번 라인을 수정을 해야할지 막막 하군요.
쓰기모드로 책을 보고 해보면 aaa.php의 내용 모두가 삭제되고 새로 써넣어지거나
맨 뒤쪽에 새로운 내용이 추가 되거나 해서 원하는 라인의 내용을 바꾸기가 쉽지 않더군요.

워낙 초보인 처지라 책을 보고 또 검색으로 찾아봐도 잘 이해가 가지 않는군요.
선배님들 도움좀 주시면 합니다.

공부 하는거니까 꼭 펄 스크립트가 아니고 다른형식의 스크립트라도 알려주시면 합니다.

if (open(MYFILE, "aaa.php")){
			$line =<MYFILE>;
			while($line ne " "){
			print ($line);
			$line =<MYFILE>;
		}
	}

aero의 이미지

우선 perl 프로그램파일을 .sh 확장자로 지정하신것 부터가 혼돈의 소지가 있으므로
perl 파일은 .pl 확장자 정도로 바꿔주시고

aaa.php 파일은 일종의 템플릿파일이라고 할 수 있으니 어떤 다른값으로 교체될 수 있는 부분을
다음과 같이 구분되게 해놓는게 좋습니다.
aaa.php

<?php
$memberid = "_ID_";
$memberpasswd = "_PASSWORD_";
?>

replace.pl

#!/usr/bin/perl
 
use strict;
use warnings;
 
print "ID:";
my $id = &lt;STDIN&gt;;
chomp($id);
print "PASSWORD:";
my $password = &lt;STDIN&gt;;
chomp($password);
 
open MYFILE,"aaa.php";
while(my $line = &lt;MYFILE&gt;)
{
    $line =~ s/_ID_/$id/;
    $line =~ s/_PASSWORD_/$password/;
	print ($line);
}

실행결과

./replace.pl
ID:myid
PASSWORD:mypassword
<?php
$memberid = "myid";
$memberpasswd = "mypassword";
?>

일단 어떻게 바꾸는지 설명만 드렸는데.
사용자별로 다르게 만들어야 된다면 템플릿으로 쓰는 파일을 따로 두고
그 파일은 손대지 않고 출력은 다른 파일로 하도록 만드시는게 좋겠네요.

kimyh의 이미지

질문을 오늘 새벽에 올려놓고 거의 10분 단위로 들어와 봤습니다.
정말 감사합니다.
소스까지 직접 만들어 올려주시니 감사하기 이를데 없습니다.
열심히 공부해서 가르처주신 정성에 보답 하도록 하겠습니다.
다시한번 바쁘신중에도 자상하게 답변 해주신 님께 진심으로 감사드립니다.

나를 고생 시키고 있는 놈
리눅스, php, js, html, vhxhtiq, 플래쉬... 쥑일넘들...

살며 그리고 사랑하며...
정보는 공유할때 그 가치가 있는것.....
나의 조그만 지식공유는 남에게 엄청난 기쁨을 안겨 준다.

kimyh의 이미지

cat aaa.php 하고 열어보면 내용이 바뀌지 않고 있는데요.
실행 시키면 분명히
ID:myidmember
PASSWORD:mypasswd
<?php
$memberid = "myidmember";
$memberpasswd = "mypasswd";
?>
라고 나오는데 왜 않 바뀌는지 모르겠군요.
지금 열심히 공부 하고 있습니다.
한번만 도와 주세요.
정말 바쁘신데 죄송합니다.

나를 고생 시키고 있는 놈
리눅스, php, js, html, vhxhtiq, 플래쉬... 쥑일넘들...

살며 그리고 사랑하며...
정보는 공유할때 그 가치가 있는것.....
나의 조그만 지식공유는 남에게 엄청난 기쁨을 안겨 준다.

aero의 이미지

제가 "사용자별로 다르게 만들어야 된다면 템플릿으로 쓰는 파일을 따로 두고
그 파일은 손대지 않고 출력은 다른 파일로 하도록 만드시는게 좋겠네요."

이렇게 말씀드렸듯이 하면됩니다.

위에서 aaa.php 를 template.php 로 바꾸어놓고
replace.pl 을 다음처럼 해서 실행해보시면

#!/usr/bin/perl
 
use strict;
use warnings;
 
print "ID:";
my $id = <STDIN>;
chomp($id);
print "PASSWORD:";
my $password = <STDIN>;
chomp($password);
 
open MYFILE,"template.php";
open OUTFILE,">out.php";
while(my $line = <MYFILE>)
{
    $line =~ s/_ID_/$id/;
    $line =~ s/_PASSWORD_/$password/;
    print OUTFILE $line;
}

out.php 라는 파일로 바뀐 파일이 저장되어있을겁니다.

kimyh의 이미지

바쁘신 중에도 잊지 않으시고 정말 정성껏 답변해주신 그 고마우신 마음 감사합니다.
알려주신대로 하니까 out.php가 제대로 바뀌는군요.
몇일동안 고생한 보람이 있습니다.
어제 저녁을 뜬눈으로 새우고 지금 까지 컴 앞에 있습니다.
정말 감사합니다.

제가 가까운곳에 있으시면 정말 소주라도 한잔 같이 하고 싶을정도로 감사합니다.
워낙에 둔재라 열심히 하고는 있습니다만 어려움이 많군요.
다시한번 바쁘신중에도 잊지 않으시고 정말 자상하고도 친절하게 알려주신 님께
진심으로 감사드리고요. 앞으로 얼마나 더 많은 질문이 이곳에 올라갈지는 모르겠습니다만
좋은 지도와 편달을 부탁드립니다.

정말 감사합니다.

나를 고생 시키고 있는 놈
리눅스, php, js, html, vhxhtiq, 플래쉬... 쥑일넘들...

살며 그리고 사랑하며...
정보는 공유할때 그 가치가 있는것.....
나의 조그만 지식공유는 남에게 엄청난 기쁨을 안겨 준다.

댓글 달기

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