ROOTPATH="/path/here"
p1 = "file1"
p2 = "file2"
for file in `find $ROOTPATH type f`; do
if [["$file" =~ $p1]]; then
echo 'got p1'
elif [["$file" =~ $p2]]; then
echo 'got p1'
else
echo 'got nothing'
실패하는데 이유를 모르겠습니다. 및 $p1
둘 다 $p2
문자열이고 파일도 문자열입니다.
나는 (2) 문자열을 비교하여 두 개의 별도 조건 에 존재하는지 $p1
확인 하려고 합니다 .p2
$file
내가 뭘 잘못했나요?
답변1
"유형별 검색" 연산자를 사용하는 데 find
필요한 구문이 누락되었습니다.
for file in $(find "$ROOTPATH" -type f); do
p1
및 변수 에 대한 할당이 p2
구문상 올바르지 않습니다.
p1="file1" # Assigns the value 'file1' to the variable p1
p1 = "file1" # Attempts to execute `p1` with arguments '=' and 'file1'
또한 두 명령문 모두 동일하므로 사용 사례에 따라 두 번째 사례에 대한 명령을 변경 echo
해야 할 수도 있습니다 .echo
또한 명령문의 구문에 if
결함이 있으며 [[
태그 앞뒤에 공백 문자나 명령 구분 기호가 필요합니다 ]]
.
답변2
구문을 수정하세요.
ROOTPATH="/path/here"
p1="file1"
p2="file2"
for file in `find $ROOTPATH -type f`;
do
if [[ $file =~ $p1 ]];
then
echo "got p1"
elif [[ $file =~ $p2 ]];
then
echo "got p2"
else
echo "got nothing"
fi
done
마련하다
- 변수 할당에서 공백 제거
-type
바꾸다type
- 사용으로 인해
"
변수에서 제거됨$file
[[
- 추가된 공백(
[[ $file
&p1 ]]
) - 추가
fi
및done
종료
주석에 언급된 대로 find
명령 루프 사용에 주의하세요.