Bash 스크립트 각 디렉터리의 웹 루트에 ht 액세스 파일을 배치합니다.

Bash 스크립트 각 디렉터리의 웹 루트에 ht 액세스 파일을 배치합니다.

/home의 모든 하위 디렉터리를 드릴다운하고 그 안에 있는 public_html 폴더를 찾는 스크립트를 작성하려고 합니다.

그런 다음 .htaccess가 이미 존재하는지 확인하고 파일에 기록하면 .htaccess 파일을 public_html에 넣습니다.

지금 나 한테있어

#!/bin/bash
FILE=.htaccess
for d in */; do
cd "${D}"
cd public_hmtl
if [-e $FILE ]; then
echo "Htaccess exists for "${D}" >> /test/error.txt
else
cp /htaccess ./
fi

이는 실행 중이 아니기 때문에 분명히 옳지 않습니다. 저는 bash에 대한 경험이 별로 없고 그것을 사용해야 했던 지 꽤 시간이 지났습니다.

답변1

#!/bin/sh

htaccess='/path/to/.htaccess'

for dir in /home/*/public_html/; do
    if [ -e "$dir/.htaccess" ]; then
        print 'htaccess exists in "%s"\n' >&2
    else
        cp "$htaccess" "$dir"
    fi
done

public_html그러면 각 디렉토리의 모든 디렉토리를 반복하여 파일이 이미 있는지 /home확인합니다 . .htaccess있는 경우 진단 메시지를 생성하고, 그렇지 않으면 .htaccess어딘가에서 표준을 복사합니다.

당신은 이것을 실행할 것입니다

$ ./script 2>error.log

코드의 문제는 cd디렉토리를 디렉토리 중 하나로 변경하지만 public_html(내에서 실행하는 경우 /home) 다시는 변경되지 않습니다.

관련 정보