Bash에 대한 지식이 부족하기 때문에 사소한 문제가 발생합니다. 41 폴더의 'Apps'디렉토리가 있습니다. 각 폴더에는 glue1.css 파일이 포함 된 css
하위 디렉토리가 있습니다. 내 목표는 bash 루프를 통해 해당 CSS 파일을 제거하는 것입니다,하지만 두 개의 폴더를 면제해야합니다 : ad
및 glue-resources
.여러 조건이있는 Bash if 문
CSS 파일이 없으므로 ad
폴더를 제외해야합니다. 나는 실행시 발생하는 다음과 같은 오류를 방지하려면 : 여기
Apps
ad
css
(empty)
glue-resources
css
glue1.css (keep this file!)
profile
css
glue1.css (remove this file!)
...
내가 지금까지 가지고있는 코드는 다음과 같습니다
rm: ad/css/glue1.css: No such file or directory
은 (간결 41 개 폴더를 결여)이 가상 디렉토리를 생각해 보자. 상위 디렉토리 경로가 glue-resources/css/
또는 ad/css/
이 아닌 경우 glue1.css 파일에서 rm
을 호출해야합니다.
for dir in **/css/; do
if [[ "${dir}" != 'glue-resources/css/' || "${dir}" != 'ad/css/' ]]; then
rm "${dir}"glue1.css
fi
done
위의 코드 결과는 작동하지 않습니다. 동일한 'No such file or directory'오류가 발생하고 glue-resources/css
에있는 glue1.css 파일이 제거되었습니다. 왜 작동하지 않는지 잘 모르겠습니다. [[
과 ]]
을 사용하면 여러 조건을 조합 할 수 있습니다.
제가 생각하기에 문제는 제가 bash에서 여러 조건이 어떻게 작동하는지 이해하지 못한다고 생각합니다. 다음 버전의 코드가 작동합니다.
for dir in **/css/; do
if [[ "${dir}" != 'glue-resources/css/' ]]; then
rm "${dir}"glue1.css
fi
done
for dir in **/css/; do
if [[ "${dir}" != 'ad/css/' ]]; then
rm "${dir}"glue1.css
fi
done
if 명령문에 여러 조건을 추가하려는 시도가 실패했습니다.
[shellcheck] (http://www.shellcheck.net)을 시험해 보면 [이번 호] (https://github.com/koalaman/shellcheck/wiki/SC2055)가 자동으로 감지됩니다. –