이것은 내 코드입니다.
if [ -f /Applications/xml[0-9].pl ]
또한 이중 괄호를 사용해 보았지만 -f =~
둘 다 작동하지 않는 것 같습니다.
처음에는 정규식에 문제가 있을 수 있다고 생각했지만 이것을 시도해 보았습니다.
echo h1 | sed 's/h[0-9]/h/'
이것은 효과가 있었습니다. 내가 여기서 뭘 잘못하고 있는 걸까?
답변1
파일을 테스트하는 데 이와 같은 정규식이나 glob을 사용할 수 없습니다. 파일을 반복해야 합니다.
for file in /Applications/xml[0-9].pl; do if [ -f "$file" ]; then ...
답변2
bash는 조건을 평가하기 전에 정규식을 확장합니다. 디렉터리에 다음과 같은 세 개의 파일이 포함되어 있는 경우
/Applications/xml0.pl
/Applications/xml1.pl
/Applications/xml2.pl
귀하의 if
진술은 다음과 같습니다
if [ -f /Applications/xml0.pl /Applications/xml1.pl /Applications/xml2.pl ]]
이는 문법적으로 올바르지 않습니다. 다음 명령을 사용하여 파일이 존재하는지 확인하려면 파일 이름을 완전히 지정해야 합니다.
for file in /Applications/xml[0-9].pl
do
if [ -f ${file} ]
또는 가능하다면 해당 find
명령을 사용하여 파일에 대해 원하는 작업을 수행하십시오.