1
unrar 파일에 대한 암호를 검색하는 bash 스크립트가 있습니다. 결과를 연결하고 스크립트 끝에서 실행 결과를 알리고 싶지만 final_result var이 "INIT-END"를 출력하는 이유를 모르겠습니다.bash 스크립트에서 var를 연결하는 중 오류가 발생했습니다.
search_pass_and_unrar 함수에서 연결하지 않는 이유는 무엇입니까?
#!/bin/bash
# Url for finding rar files
url_hdd="/media/HDD"
final_result="INIT-"
unrar_files(){
filebase=`dirname "$1"`
url_rar="$1"
url_for_pass=""
# Search files for password
find "$filebase" -name '*CONTR*.txt' | while read LINE; do
# Convert Windows line ending
$(sed -i 's/^M//g' "$LINE")
# Get url where we can find file password
url_for_pass=$(cat "$LINE" | grep -Eo '(http|https)://[^?"]+')
search_pass_and_unrar "$url_for_pass" "$url_rar" "$filebase"
done
}
search_pass_and_unrar(){
final_url="$1"
pass=$(curl -s -S -L "$final_url" | grep 'name="txt_password"' | grep -oP 'value="\K[^"]+')
if [[ -z "$pass" ]]
then
final_result+="Error, password not found"
return
fi
result_unrar=$(unrar e "${2}" "${3}" -p"${pass}")
final_result+="Result: ${result_unrar}"
}
# Find rar files and call unrar_files function
find "$url_hdd" -type f -name "*.rar" | while read LINE; do
unrar_files "$LINE"
done
final_result+="END"
echo "$final_result" # "INIT-END"
고맙습니다.
감사합니다. 오타가 있는지, 내가 코드를 복사했는지, 결과가 똑같은지 모르겠습니다. –
아, 또 다른'find "$ filebase"-name "* CONTR * .txt '| 읽는 동안 LINE; 비슷하게 변경 될 필요가있는'unrar_files' 내부에서'do'를 호출합니다. – anubhava
오, 확인 했어야합니다. 그것은 매력처럼 작동합니다. –