/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
) 다시는 변경되지 않습니다.