#!/bin/sh
for file in /home/*
do
if [ "{$file}" != "/home/lost+found" ]
then
touch $file/FILE1
done
내가 달성하고 싶은 것은 모든 /home/ 디렉토리를 반복하고문서제외하고/집/분실+발견. 내가 뭘 잘못했나요?
답변1
fi
아무것도 아닙니다. if 문을 종료하고 문자 그대로 중괄호를 사용하여 {$file}
확장하는 것을 놓쳤습니다 {/home/somedir}
. 중괄호가 있는 매개변수는 ${file}
달러 기호가 중괄호 외부에 있도록 확장됩니다 .
또한 패턴은 /home/*
디렉터리뿐만 아니라 모든 파일과 일치하므로 touch
파일이 있으면 오류가 발생합니다. 내용이 많지 않을 수도 있지만 디렉터리만 일치 /home
하도록 패턴을 변경하는 것은 쉽습니다 /home/*/
. 후행 슬래시는 변수의 일부가 되므로 비교할 때 이 점을 고려하십시오. (또는 테스트 [ -d "$file" ]
.)
또한 일반적으로 인용하고 싶은 것은 "$file"
... 아니면 dir
여기에 넣는 것이 더 적절할 수도 있습니다.
#!/bin/sh
for dir in /home/*/ ; do
if [ "$dir" != "/home/lost+found/" ] ; then
touch "$dir/FILE1"
fi
done