링크를 재귀적으로 따라가며 모든 페이지에서 grep을 실행하세요.

링크를 재귀적으로 따라가며 모든 페이지에서 grep을 실행하세요.

특정 사용자 이름을 찾기 위해 아래 URL에서 일부 로그를 수집하려고 합니다. 하지만 아무런 결과도 얻지 못하고 계속 실행됩니다.

grepfor="username"
urls=("https://tgstation13.org/parsed-logs/terry/data/logs/2019/01")
while [ ${#urls[@]} -ne 0 ]
do
    content="$(curl -s "$url[0]")"
    echo "$content" | grep "$grepfor"
    delete=($urls[0])
    add=(`echo "$content" | grep -Po '(?<=href=")[^"]*'`)
    urls=( "${urls[@]/$delete}" "{$add[@]}" )
done

답변1

대신 배열 "${urls[0]}"의 첫 번째 요소 에 대해 .urls$urls[0]

배열의 첫 번째 요소를 제거 urls하고 add배열을 끝에 추가하려면 다음을 사용하십시오.

urls=( "${urls[@]:1}" "${add[@]}" )

항상 모든 확장명을 인용하세요 ${#urls[@]}. 심지어 .

나는 당신의 curs와 grep을 자세히 살펴 보지 않았지만

printf '%s\n' "$content"

백슬래시가 데이터에 보존되도록 하려는 경우.

관련된:

관련 정보