Piszę swój pierwszy skrypt basha. Za każdym razem, gdy go uruchomię, aby upewnić się, że działa, wszystko działa dokładnie tak, jak chciałbym, z wyjątkiem done
polecenie na samym końcu. Zamiast tego zapętla się do pytania z pytaniem użytkownika, czy są pewni, że chcą autoryzować go do wprowadzenia zmian.
Ponieważ po raz pierwszy piszę skrypt, jestem pewien, że istnieją lepsze, bardziej efektywne sposoby wykonywania akcji, które napisałem, więc nie proszę o wkład w tym zakresie. Fakt, że robi to, co chciałbym zrobić (nawet jeśli wydaje się, że nie ma końca), jest dla mnie wystarczająco dobry w tym momencie.
Oto skrypt (wszystko, co widzisz [with backets]
to coś, co załączyłem tylko dla tego SU: Pytanie, a nie w samym skrypcie):
#!/bin/bash
perl -e 'print "\n"x128;'
echo ' ' ; echo ' ' ;
echo "
[Omitted to make this SU:Question shorter]
⁓⁓⁓⁓⁓⁓⁓⁓⁓⁓⁓⁓⁓⁓⁓⁓⁓⁓⁓⁓⁓⁓⁓⁓⁓⁓⁓⁓⁓⁓⁓⁓⁓⁓⁓⁓⁓⁓⁓⁓⁓
TLDR the above info?
That's okay, it is also available in the included README.
⁓⁓⁓⁓⁓⁓⁓⁓⁓⁓⁓⁓⁓⁓⁓⁓⁓⁓⁓⁓⁓⁓⁓⁓⁓⁓⁓⁓⁓⁓⁓⁓⁓⁓⁓⁓⁓⁓⁓⁓⁓
"
[This does not do anything, just something neat I learned how to do...]
c=3 # seconds to wait
REWRITE="\e[25D\e[1A\e[K"
echo " First thing first... I'll need you have run this as ROOT/SU..."
while [ $c -gt 0 ]; do
c=$((c-1))
sleep 1
#echo -e " ${REWRITE}$c"
done
echo ' '
if [ $(id -u) != 0 ]; then
echo " Oops, you didn't run this as ROOT or SU! Here is the proper command:
⟹ sudo ./enable-wifi.sh ⟸
"
exit
# elevate script privileges
else
echo " ⁓⁓⁓⁓⁓⁓⁓⁓⁓⁓⁓⁓⁓⁓⁓⁓⁓⁓⁓⁓⁓⁓⁓⁓⁓⁓⁓⁓⁓⁓⁓⁓⁓⁓⁓⁓⁓⁓⁓⁓⁓
Awesome, you're ready!"
fi
while true; do
read -p "
Just to make sure... Do you wish to execute this script?
Please enter [Y/y] / [N/n] here: " yn
case $yn in
[Yy]* ) sudo modprobe -r acer-wmi ; sudo rfkill unblock all ; echo "blacklist acer_wmi" | sudo tee /etc/modprobe.d/acer-wmi.conf ; clear ; echo ' ' ; echo ' ' ; echo 'DONE!' ; echo ' ' ; echo ' ' ; echo 'The WIFI Card should be working now!' ; echo ' ' ; echo ' ';;
[Nn]* ) echo ' ' ; echo ' ⁓⁓⁓⁓⁓⁓⁓⁓⁓⁓⁓⁓⁓⁓⁓⁓⁓⁓⁓⁓⁓⁓⁓⁓⁓⁓⁓⁓⁓⁓⁓⁓⁓⁓⁓⁓⁓⁓⁓⁓⁓
You have decided to cancel, this script will end immediately
without making any changes to your HP Envy x360.!
' ; exit;;
# * ) echo "Please answer yes or no.";;
esac
done
Bardzo dziękuję za obejrzenie tego pytania i pomoc!
~ Ev
while true; do
oznacza „rób to na zawsze”; nie ma możliwości zakończenia pętli, chyba że przezexit
dzieje się tak, jeśli użytkownik wprowadzi „Nie”.