MicroOS Desktop Use to Help with ALP Feedback
Rozwiązywanie URL Wymyśliłem coś takiego: Code: REDIRECT0="https://sourceforge.net/projects/systemrescuecd/files/latest/download" REDIRECT1="$(curl -ks ${REDIRECT0} | grep https | sed -e 's/.*<a href="//' -e 's/">.*//')" REDIRECT2="$(curl -ks ${REDIRECT1} | grep https | sed -e 's/.*<a href="//' -e 's/">.*//')" Wadą tego rozwiązania jest to, że dość niezgrabnie można tutaj przechycić kod wyjścia, więc ostatecznie tego nie robię. No to Code: _getRedirect () { curl -ks $1 | grep https | sed -e 's/.*<a href="//' -e 's/">.*//' } wrzucenie curl do funkcji jest ciekawym rozwiązaniem, które może pozwolić podejść do przechwycenia kodów wyjścia z tegoż curl, Tyle, że jeżeli strona się wyświetli poprawnie, a jej zawartość się zmieni, to i tak otrzymam z curl zero na wyjściu. Natomiast poniższy test daje mi to, czego chcę: jeżeli nie znajdę oczekiwanego regexpa w nazwie pliku, oznacza to, że ponownie muszę przeanalizować zwrotkę z pierwszego przekierowania, czyli z $REDIRECT0, a sam skrypt mogę zakończyć błędem. I takie podejście wyraziłem w ten sposób: Code: REDIRECT0="https://sourceforge.net/projects/systemrescuecd/files/latest/download" _getRedirect () { RED="$(curl -ks $1 | grep https | sed -e 's/.*<a href=\"//' -e 's/\">.*//')" echo ${RED} | grep "systemrescue-.*-amd64.iso" || echo "Expected filename not recognized." } REDIRECT1="$(_getRedirect ${REDIRECT0})" REDIRECT2="$(_getRedirect ${REDIRECT1})" FILENAME="$(echo ${REDIRECT2} | sed 's/.*\///')"
REDIRECT0="https://sourceforge.net/projects/systemrescuecd/files/latest/download" REDIRECT1="$(curl -ks ${REDIRECT0} | grep https | sed -e 's/.*<a href="//' -e 's/">.*//')" REDIRECT2="$(curl -ks ${REDIRECT1} | grep https | sed -e 's/.*<a href="//' -e 's/">.*//')"
_getRedirect () { curl -ks $1 | grep https | sed -e 's/.*<a href="//' -e 's/">.*//' }
REDIRECT0="https://sourceforge.net/projects/systemrescuecd/files/latest/download" _getRedirect () { RED="$(curl -ks $1 | grep https | sed -e 's/.*<a href=\"//' -e 's/\">.*//')" echo ${RED} | grep "systemrescue-.*-amd64.iso" || echo "Expected filename not recognized." } REDIRECT1="$(_getRedirect ${REDIRECT0})" REDIRECT2="$(_getRedirect ${REDIRECT1})" FILENAME="$(echo ${REDIRECT2} | sed 's/.*\///')"
Code: $RPMS | ForEach { rpm -q --queryformat "%{NAME}\n" $_ | out-null $? ? $INSRPMS.Add($_) : $MISRPMS.Add($_) } Przecież w Bashu też tak można, o czym zapomniałem skupiając się właśnie na poprawnym zbudowaniu i obsłużeniu tablicy: Code: for i in ${RPMS[@]}; do rpm -q --queryformat "%{NAME}\n" ${i} &> /dev/null [ $? -eq 0 ] && INSRPMS=(${INSRPMS[@]} $i) || MISRPMS=(${MISRPMS[@]} $i) done
$RPMS | ForEach { rpm -q --queryformat "%{NAME}\n" $_ | out-null $? ? $INSRPMS.Add($_) : $MISRPMS.Add($_) }
for i in ${RPMS[@]}; do rpm -q --queryformat "%{NAME}\n" ${i} &> /dev/null [ $? -eq 0 ] && INSRPMS=(${INSRPMS[@]} $i) || MISRPMS=(${MISRPMS[@]} $i) done