2011-09-15 3 views
0

내 서버에서 자동화를 수행하기 위해 Linux 쉘 스크립트를 작성하려고합니다. 나는 우분투 11.04를 사용하고 있습니다. 다음과 같이Linux 쉘 여러 텍스트 파일에 정의 된 변수를 사용하여 다른 쉘 스크립트를 실행하는 스크립트

기본적으로, 프로세스는 다음과 같습니다

A. 나는 디렉토리 (/ 홈/MYDIR)에서 PHP를 사용하여 여러 개의 텍스트 파일을 만듭니다. 이러한 텍스트 파일은 쉘 스크립트의 스텁이며 변수 정의 만 포함합니다. 다음은 파일 중 하나에있을 수있는 샘플입니다.

B. 위의 변수를 참조하는 설치 셸 스크립트가 있습니다. 내가 설정을 실행 한 후/홈/MYDIR에 얼마나 이러한 파일의 많은 발견 할 것이다 활성화 쉘 스크립트를 작성하기 위해 노력하고있어

#!/bin/bash 
mkdir /home/newdir/$username 

: 아래 스크립트에있을 수 있습니다 무엇의 일부입니다 디렉토리에있는 파일 각각에 대한 쉘 스크립트. 예를 들어 5 개의 다른 사용자 이름, 암호 등이있는 5 개의 파일이있는 경우 설치 스크립트는 각 텍스트 파일의 변수를 사용하여 5 번 실행되어이 스크립트에 정의 된 작업을 완료합니다.

그런 스크립트 작성 방법에 대한 도움을 주시면 감사하겠습니다. 내 마음이 작동하는 방식은 어쩌면 ls -1 /home/mydir | grep .txt을 사용하여 모든 txt 파일을 얻은 다음 배열로 추출한 다음 스크립트를 반복하고 실행하지만 쉘 스크립팅 전문가가 아니기 때문에 도움이 필요합니다. 통사론. 쉘 스크립팅이 PHP라면, 그것은 나에게 문제가되지는 않았지만, 슬프게도, 그렇지 않습니다.

미리 감사드립니다.

+0

알다시피, 명령 줄에서 PHP를 사용할 수 있습니다. 나는 우분투 꾸러미가'php5-cli '라고 믿는다. 그런 다음 PHP 스크립트를 작성할 수 있습니다. – derobert

+0

@Derobert : 예, 알지만이 스크립트는 CRON을 사용하여 실행할 계획입니다. –

+0

PHP 스크립트를 cron에서 실행하지 못하게하는 방법은 없습니다. 쉘 스크립트는 특별한 방법이 아닙니다. '#!/usr/bin/php' 줄을 맨 위에 놓고 chmod + x it을 입력하면 다른 프로그램과 같이 실행됩니다. – derobert

답변

2

쉘에서이 작업을 수행하는 방법은이 같은 것입니다 :

for f in /home/mydir/*.txt; do 
    . "$f" # source settings file 
    mkdir "/home/newdir/$username" 
done 

하지만 내 댓글에서 언급 한 바와 같이, 당신은 PHP에서 스크립트를 작성할 수 있습니다.

#!/usr/bin/php 
<?php 
... 
?> 

편집

귀하의 코드가 난 그냥 내가 정말하고 싶었던 것 인 쉘 스크립트 내에서 쉘 스크립트를 호출을 편집 작동합니다. 그래서 아래 코드도 작동합니다.

#!/bin/bash 
for f in /home/dir/*.txt 
do 
    . "$f" 
    . /path/to/setup-shell-script #referenced in B of the original question 
done 
+0

감사합니다. 이것은 나를 위해 일했다. 방금 코드를 약간 편집했습니다. –

1

이것은 . 또는 source 명령이 쉘 스크립트에 사용되는 명령입니다. 인수 (파일)의 내용을 읽고 실행합니다. 스크립트에서 사용자가 의도하지 않은 파일을 사용하도록주의하십시오. C 쉘에는 source 명령이 포함됩니다 (Bourne 쉘은 . 만 지원함). Bash는 두 가지를 모두 제공합니다.

. mystery_settings_file 

쉘이 (가 실행 일 필요는 없습니다)는 $ 경로를 사용하지만 파일 만 읽을 수 있습니다 검색합니다 : 당신이 쓰는 경우 있음을

. /home/mydir/mystery_settings_file 
mkdir /home/newdir/$username 

참고. 이것은 매우 유용 할 수 있습니다.

관련 문제