The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]



"bash скрипт для монтирования андроид телефона"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Открытые системы на рабочей станции (icewm, xfce... / Linux)
Изначальное сообщение [ Отслеживать ]

"bash скрипт для монтирования андроид телефона"  –1 +/
Сообщение от Isothiocyanate (ok), 11-Янв-21, 18:53 
Доброго времени суток.

Учусь потихоньку писать bash скрипты. Сделал вот такой простой скрипт для монтирования Андроид телефона в Debian 10.7, XFCE 4.12.

#!/bin/bash
echo "This script will mount yours Android phone using go-mtpfs."
echo " Firstly install go-mtpfs, MTP protocol, then make dir called AndroidDevice in yours /home/user_name catalog."
echo " Make dir AndroidDevice in yours home catalog? Yes=1 No=2"
read D
if D=1 mkdir ~/AndroidDevice
then
echo "mount point is created."
else
go-mtpfs ~/AndroidDevice &
# Note: If go-mtpfs is not ran in the background (with & at the end), another console will be
# needed to browse the device and unmount the device (when finished).
echo "Device is mounted."
fi
echo "Do you wish to unmount it? Yes=1 No=2"
read B
fusermount -u ~/AndroidDevice
echo " Unmount is Ok."
#When the device is unmount, go-mtpfs will quit.  

Но несмотря на оператор if , скрипт каждый раз упорно пытается создать точку монтирования.
Несмотря на ошибку, вызванную тем что точка существует, скрипт выполняется до конца.
Монтирует телефон, дает возможность переместить файлы в GUI , затем размонтирует.
Вот так:

rost@DEBIAN999:~/Mount_Android_Phone$ ./Android_mount_script
This script will mount yors Android phone using go-mtpfs.
Firstly install go-mtpfs, MTP protocol, then make dir called AndroidDevice in yours /home/user_name catalog.
Make dir AndroidDevice in yours home catalog? Yes=1 No=2
2
mkdir: cannot create directory ‘/home/rost/AndroidDevice’: File exists
Device is mounted.
Do you wish unmount it? Yes=1 No=2
2021/01/11 17:50:14 FUSE mounted
1
Unmount is Ok.
rost@DEBIAN999:~/Mount_Android_Phone$

P.S.:
echo "Do you wish unmount it? Yes=1 No=2"   - по сути без разницы что выбрать - просто дает задержку пока вы копируете с телефона данные - ждет ответа с клавиатуры.
Может заменить на "for unmounting press any key"

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения [Сортировка по времени | RSS]


1. "bash скрипт для монтирования андроид телефона"  –1 +/
Сообщение от Isothiocyanate (ok), 11-Янв-21, 18:58 
Да, прошу прощения за ошибки в английсом - набирал торопясь - то букву потерял то частицы to не хватет

> #!/bin/bash
> echo "This script will mount YOURS Android phone using go-mtpfs."

Ответить | Правка | Наверх | Cообщить модератору

2. "bash скрипт для монтирования андроид телефона"  +/
Сообщение от DiabloPC (ok), 11-Янв-21, 19:14 

...
if [ $D = '1' ]
    then
        mkdir ololo
        echo "blablabla"
    else
...

зы
я что-то вообще не понял что это за извращение. Почему go-mtpfs?

ззы
читать от корки до корки:
https://habr.com/ru/post/471242/

Ответить | Правка | Наверх | Cообщить модератору

3. "bash скрипт для монтирования андроид телефона"  +/
Сообщение от DiabloPC (ok), 11-Янв-21, 19:34 
И еще:
если точка монтирования должна оставаться после отключения телефона, то проверка не правильная по определению. Там нужно исходить из вопроса "Существует ли такой каталог?"
т.е

...
if ! [ -d $HOME/AndroidDevice ]
    then
        mkdir $HOME/AndroidDevice
    else
...

А если точка монтирования временная, т.е. удаляется после отмонтирования, то накой вообще проверка, если такого каталога не должно существовать по умолчанию?

Ответить | Правка | Наверх | Cообщить модератору

6. "bash скрипт для монтирования андроид телефона"  –1 +/
Сообщение от Isothiocyanate (ok), 11-Янв-21, 20:19 
> ззы
> читать от корки до корки:
> https://habr.com/ru/post/471242/

спасибо за ссылку на учебник

Ответить | Правка | К родителю #2 | Наверх | Cообщить модератору

4. "bash скрипт для монтирования андроид телефона"  +1 +/
Сообщение от Licha Morada (ok), 11-Янв-21, 19:37 
> Но несмотря на оператор if , скрипт каждый раз упорно пытается
> создать точку монтирования.

Оператор if работае не так, как вы ожидаете.
Он выполняет "D=1 mkdir ~/AndroidDevice" в качестве test condition, т.е. в любом случае. Кроме того, D=1 это не сравнивание а присваивание значения.
https://tldp.org/LDP/Bash-Beginners-Guide/html/sect_07_01.html

Правильно было бы
if [ "$D" = "1" ]; then
  mkdir ~/AndroidDevice
  echo "mount point is created."

Но всё равно так не надо.

> mkdir: cannot create directory ‘/home/rost/AndroidDevice’: File exists

Делайте mkdir -p ~/AndroidDevice, и будет вам щастье.


Я так понял, вы бoльше хвастаетесь чем жалуетесь.
На предмет похвастаться, я в своё время отчаялся найти стабильный метод монтирования Андроида по шнурку, и теперь монтирую его по SSH. Без скрипта, одной командой монтирую, другой размонтирую. На телефпне установлен SimpleSSHD с аутентикацией по ключам, детали прописаны в моём ~/.ssh/config

sshfs -o nonempty android:/storage/emulated/0 /mnt/android
fusermount -u /mnt/android

Ответить | Правка | Наверх | Cообщить модератору

5. "bash скрипт для монтирования андроид телефона"  –1 +/
Сообщение от Isothiocyanate (ok), 11-Янв-21, 20:18 
> sshfs -o nonempty android:/storage/emulated/0 /mnt/android
> fusermount -u /mnt/android

Пока хвастаться нечем - в 2 строчках 3 ошибки

Спасибо за разбор полетов.
Мне еще пока не совсем понятна ситуация с проверкой существования директории.

И если она временная - монтировать в /tmp а потом удалять точку монтирования?


Ответить | Правка | Наверх | Cообщить модератору

7. "bash скрипт для монтирования андроид телефона"  +/
Сообщение от Аноним (7), 12-Янв-21, 01:28 
>> sshfs -o nonempty android:/storage/emulated/0 /mnt/android
>> fusermount -u /mnt/android
> Пока хвастаться нечем - в 2 строчках 3 ошибки
> Спасибо за разбор полетов.
> Мне еще пока не совсем понятна ситуация с проверкой существования директории.
> И если она временная - монтировать в /tmp а потом удалять точку
> монтирования?

man, searching via inet for FHS
политки, стратегии и тактики использования на десткопах, сервах, мобилах, ембедах разные
+
возможны вендор специфик осложнения и прочий насморк


Ответить | Правка | Наверх | Cообщить модератору

8. "bash скрипт для монтирования андроид телефона"  +1 +/
Сообщение от Licha Morada (ok), 12-Янв-21, 03:33 

> Мне еще пока не совсем понятна ситуация с проверкой существования директории.

В том примере который я дал, я ничего не проверяю. Выполняю руками и смотрю глазами.

Если заворачивать в скрипт, то:
mkdir -p точкамонтирования
if [ ! -d точкамонтирования ]; then
  обработать ошибку

Посмотрите в man mkdir на предмет "-p" и man test на предмет "-d".
Имейте в виду, что в Баше конструкции "if [ условие ]" нет. Есть "if команда", а "[" это на самом деле алиас команды test.

> И если она временная - монтировать в /tmp а потом удалять точку
> монтирования?

Монтируйте туда, где бы этим было удобно пользоваться вам.
Если вам удобно видеть папку на десктопе, то в ~/Desktop/Android.
Если когда вы открываете файловый менеджер, у вас первым делом открывается домашняя диретория, то в ~/Android.
Если у вас настроено, что по пявлению чего-то в /media совершаются какие-то действия или открывается какой-то диалог, то в /media/${USER}/Android.
Если вы привыкли что всё "внешнее" монтируется в /mnt, то туда.
В /tmp/Android тоже можно, ИМХО не слишком удобно.
Прямо в /tmp монтировать не надо.

Если вы не скачите из системы в систему и нет трбования "прибирать за собой", то я бы точку монтирования не удалял.

Ответить | Правка | К родителю #5 | Наверх | Cообщить модератору

9. "bash скрипт для монтирования андроид телефона"  +/
Сообщение от Анонимemail (9), 12-Янв-21, 05:17 
> Если вы не скачите из системы в систему и нет трбования "прибирать
> за собой", то я бы точку монтирования не удалял.

Имхо, при таких требованиях, один раз нормально настроить удава на автомонтирование и не заморачиваться

Ответить | Правка | Наверх | Cообщить модератору

10. "bash скрипт для монтирования андроид телефона"  +/
Сообщение от Isothiocyanate (ok), 12-Янв-21, 20:51 
#!/bin/bash
echo "This script will mount yors Android phone using go-mtpfs."
echo " Firstly install go-mtpfs, MTP protocol, then make dir called AndroidDevice in yours /home/user_name catalog."
echo " Make dir AndroidDevice in yours home catalog? Yes=1 No=2"
read D
if [[ "D" = "1" ]]  
then
mkdir ~/AndroidDevice
echo "mount point is created."
else
go-mtpfs ~/AndroidDevice &
# Note: If go-mtpfs is not ran in the background (with & at the end), another console will be needed to browse the device and unmount the device (when finished).
echo "Device is mounted."
fi
echo "Do you wish unmount it? Yes=press any key"
read B
fusermount -u ~/AndroidDevice
echo " Unmount is Ok."
#When the device is unmount, go-mtpfs will quit.

Теперь работает как надо.
rost@DEBIAN999:~/Mount_Android_Phone$ ./Android_mount_script2
This script will mount yors Android phone using go-mtpfs.
Firstly install go-mtpfs, MTP protocol, then make dir called AndroidDevice in yours /home/user_name catalog.
Make dir AndroidDevice in yours home catalog? Yes=1 No=2
2
Device is mounted.
Do you wish unmount it? Yes=press any key
2021/01/12 19:47:27 FUSE mounted
l
Unmount is Ok.
rost@DEBIAN999:~/Mount_Android_Phone$

Позже я попробую сделать автомтическую проверку на наличие директории монтирования и создании таковой если ее нет.

Хотя нет, мне же надо сравнить числа а не строки:

#!/bin/bash
echo "This script will mount yors Android phone using go-mtpfs."
echo " Firstly install go-mtpfs, MTP protocol, then make dir called AndroidDevice in yours /home/user_name catalog."
echo " Make dir AndroidDevice in yours home catalog? Yes=1 No=2"
read D
if [[ "$D" -eq 1 ]]  
then
mkdir ~/AndroidDevice
echo "mount point is created."
else
go-mtpfs ~/AndroidDevice &
# Note: If go-mtpfs is not ran in the background (with & at the end), another console will be needed to browse the device and unmount the device (when finished).
echo "Device is mounted."
fi
echo "Do you wish unmount it? Yes=press any key"
read B
fusermount -u ~/AndroidDevice
echo " Unmount is Ok."
#When the device is unmount, go-mtpfs will quit.

Выхлоп:
rost@DEBIAN999:~/Mount_Android_Phone$ ./Android_mount_script2
This script will mount yors Android phone using go-mtpfs.
Firstly install go-mtpfs, MTP protocol, then make dir called AndroidDevice in yours /home/user_name catalog.
Make dir AndroidDevice in yours home catalog? Yes=1 No=2
2
Device is mounted.
Do you wish unmount it? Yes=press any key
2021/01/12 19:55:18 FUSE mounted
f
Unmount is Ok.
rost@DEBIAN999:~/Mount_Android_Phone$ ./Android_mount_script2
This script will mount yors Android phone using go-mtpfs.
Firstly install go-mtpfs, MTP protocol, then make dir called AndroidDevice in yours /home/user_name catalog.
Make dir AndroidDevice in yours home catalog? Yes=1 No=2
1
mkdir: cannot create directory ‘/home/rost/AndroidDevice’: File exists
mount point is created.
Do you wish unmount it? Yes=press any key
e
fusermount: entry for /home/rost/AndroidDevice not found in /etc/mtab
Unmount is Ok.
rost@DEBIAN999:~/Mount_Android_Phone$

Ответить | Правка | К родителю #5 | Наверх | Cообщить модератору

11. "bash скрипт для монтирования андроид телефона"  +/
Сообщение от DiabloPC (ok), 14-Янв-21, 23:30 
> echo " Firstly install go-mtpfs, MTP protocol, then make dir called AndroidDevice
> in yours /home/user_name catalog."

Зачем каждый раз это выводить?
Делаем проверку наличия go-mtpfs - если его нету выводим сообщение и прерываем работу скрипта:

...
IsGomtpfsPresent=$(which go-mtpfs &>/dev/null; echo $?)
if ! [ "$IsGomtpfsPresent" == '0' ]
    then
        echo -e "Go-mtpfs not installed. \nPlease, install it for use this script"
        exit 1
fi
...

> echo " Make dir AndroidDevice in yours home catalog? Yes 1/No 2"
> read D
> if [[ "$D" -eq 1 ]]
> then
> mkdir ~/AndroidDevice
> echo "mount point is created."
> else
> go-mtpfs ~/AndroidDevice &

А здесь вообще ничерта не понял:
в таком варианте, после создания каталога оно ничерта не смонтирует, т.к. монтирование в противоположном условии:

Если [[ответ=="да]]
    создать каталог
если ответ равен любому другому значению
    выполнить монтирование.

Правильно будет вот так:

...
echo 'Make dir AndroidDevice in your home catalog? [Y]es/[N]o'
read ANS
if [[ $ANS == "Y" || $ANS = "y" || $ANS == "Yes" || $ANS == "yes" ]]
    then
        mkdir $HOME/AndroidDevice
fi

go-mtpfs bla-bla-bla
...


Ответить | Правка | Наверх | Cообщить модератору

12. "bash скрипт для монтирования андроид телефона"  +/
Сообщение от DiabloPC_пробегалemail (?), 15-Янв-21, 00:40 
А еще правильнее вот так:
...
if ! [ -d $HOME/AndroidDevice ]
    echo 'Make dir AndroidDevice in your home catalog? [Y]es/[N]o'
    read ANS
    if [[ $ANS == "Y" || $ANS == "y" || $ANS == "Yes" || $ANS == "yes" ]]
        then
            mkdir $HOME/AndroidDevice
        else
            echo -e "Mount point does not exist. \nCan't Mount. "
            exit 2
    fi
fi
go-mtpfs bla-bla-bla
...


Ответить | Правка | Наверх | Cообщить модератору

13. "bash скрипт для монтирования андроид телефона"  +/
Сообщение от Isothiocyanate (ok), 15-Янв-21, 15:26 
Спасибо, перепишу его.


Ответить | Правка | Наверх | Cообщить модератору

14. "bash скрипт для монтирования андроид телефона"  +/
Сообщение от Isothiocyanate (ok), 15-Янв-21, 16:55 

>     if [[ $ANS == "Y" || $ANS ==
> "y" || $ANS == "Yes" || $ANS == "yes" ]]
>         then

DiabloPC, а где ты взял эту конструкцию с == ?        

Ответить | Правка | К родителю #12 | Наверх | Cообщить модератору

15. "bash скрипт для монтирования андроид телефона"  +/
Сообщение от DiabloPC_пробегалemail (?), 15-Янв-21, 19:47 
>>     if [[ $ANS == "Y" || $ANS ==
>> "y" || $ANS == "Yes" || $ANS == "yes" ]]
>>         then
> DiabloPC, а где ты взял эту конструкцию с == ?

Просто написал от руки.  
|| это логическое (ИЛИ)

Ответить | Правка | Наверх | Cообщить модератору

16. "bash скрипт для монтирования андроид телефона"  +/
Сообщение от Isothiocyanate (ok), 15-Янв-21, 23:51 
#!/bin/bash
echo "This script will mount yors Android phone using go-mtpfs."
echo " Firstly install go-mtpfs, MTP protocol, then make dir called AndroidDevice in yours /home/user_name catalog."
IsGomtpfsPresent=$(which go-mtpfs &>/dev/null; echo $?)
if ! [ "$IsGomtpfsPresent" == '0' ]
    then
        echo -e "Go-mtpfs not installed. Please, install it for use this script"
        exit 1
fi

if [ -d $HOME/AndroidDevice ]
    then
    ANS=A
    echo "Mount point exist."
    else
    echo "Make dir AndroidDevice in your home catalog? [Y]es/[N]o"
    read ANS
fi
    
if [[ $ANS == "Y" || $ANS == "y" || $ANS == "Yes" || $ANS == "yes" ]]
        then
            mkdir $HOME/AndroidDevice
            echo "Mount point is created."
fi

if [[ $ANS == "N" || $ANS == "n" || $ANS == "No" || $ANS == "no" ]]
        then
            echo -e "We do not create mount point."
        exit 2
fi

go-mtpfs ~/AndroidDevice &
# Note: If go-mtpfs is not ran in the background (with & at the end), another console will be needed to browse the device and unmount the device (when finished).
echo "Device is mounted."
echo "Do you wish unmount it? Yes=press Y key"
read B
fusermount -u ~/AndroidDevice
echo " Unmount is Ok."
# When the device is unmount, go-mtpfs will quit.
exit 3

Как-то так.

Ответить | Правка | Наверх | Cообщить модератору

17. "bash скрипт для монтирования андроид телефона"  +/
Сообщение от Isothiocyanate (ok), 15-Янв-21, 23:52 
rost@DEBIAN999:~/Mount_Android_Phone$ ./Android_mount_script4
This script will mount yors Android phone using go-mtpfs.
Firstly install go-mtpfs, MTP protocol, then make dir called AndroidDevice in yours /home/user_name catalog.
Mount point exist.
Device is mounted.
Do you wish unmount it? Yes=press Y key
2021/01/15 22:45:12 FUSE mounted
y
Unmount is Ok.
rost@DEBIAN999:~/Mount_Android_Phone$ ./Android_mount_script4
This script will mount yors Android phone using go-mtpfs.
Firstly install go-mtpfs, MTP protocol, then make dir called AndroidDevice in yours /home/user_name catalog.
Make dir AndroidDevice in your home catalog? [Y]es/[N]o
y
Mount point is created.
Device is mounted.
Do you wish unmount it? Yes=press Y key
2021/01/15 22:45:55 FUSE mounted
y
Unmount is Ok.
rost@DEBIAN999:~/Mount_Android_Phone$ ./Android_mount_script4
This script will mount yors Android phone using go-mtpfs.
Firstly install go-mtpfs, MTP protocol, then make dir called AndroidDevice in yours /home/user_name catalog.
Mount point exist.
Device is mounted.
Do you wish unmount it? Yes=press Y key
2021/01/15 22:46:24 FUSE mounted
y
Unmount is Ok.
rost@DEBIAN999:~/Mount_Android_Phone$ ./Android_mount_script4
This script will mount yors Android phone using go-mtpfs.
Firstly install go-mtpfs, MTP protocol, then make dir called AndroidDevice in yours /home/user_name catalog.
Make dir AndroidDevice in your home catalog? [Y]es/[N]o
n
We do not create mount point.
rost@DEBIAN999:~/Mount_Android_Phone$
rost@DEBIAN999:~/Mount_Android_Phone$ ./Android_mount_script4
This script will mount yors Android phone using go-mtpfs.
Firstly install go-mtpfs, MTP protocol, then make dir called AndroidDevice in yours /home/user_name catalog.
Go-mtpfs not installed. Please, install it for use this script
rost@DEBIAN999:~/Mount_Android_Phone$
Ответить | Правка | Наверх | Cообщить модератору

18. "bash скрипт для монтирования андроид телефона"  +/
Сообщение от DiabloPC (ok), 16-Янв-21, 04:01 
#!/bin/bash

echo -e "This script will mount your Android phone using go-mtpfs.\n\n"
echo "First install go-mtpfs, MTP protocol, then make dir called AndroidDevice in your /home/user_name catalog." ## Учитуя наличие следующих шести строк, которые выведут предупреждение, если это потребуется, эта строка ненужна.
IsGomtpfsPresent=$(which go-mtpfs &>/dev/null; echo $?)
if ! [ "$IsGomtpfsPresent" == '0' ]
    then
        echo -e "Go-mtpfs not installed. Please, install it for use this script"
        exit 1
fi

if [ -d $HOME/AndroidDevice ]
    then
        ANS=A  ## Не вкурил: что это?? Зачем?
        echo "Mount point exist."
    else
        echo "Make dir AndroidDevice in your home catalog? [Y]es/[N]o"
        read ANS
fi
    
## следующие две проверки условий нелогично выносить из предыдущей конструкции if-then-else, т.к. если выполнилось условие предыдущей проверки то они не нужны вообще.
## if [[ $ANS == "Y" || $ANS == "y" || $ANS == "Yes" || $ANS == "yes" ]]
##     then
##         mkdir $HOME/AndroidDevice
##         echo "Mount point is created."
## fi
##
## if [[ $ANS == "N" || $ANS == "n" || $ANS == "No" || $ANS == "no" ]]
##     then
##         echo -e "We do not create mount point."
##         exit 2
## fi

## Получаем вот такое:

if [ -d $HOME/AndroidDevice ]
    then
        ANS=A  ## Не вкурил: что это?? Зачем?
        echo "Mount point exist."
    else
        echo "Make dir AndroidDevice in your home catalog? [Y]es/[N]o"
        read ANS
        if [[ $ANS == "Y" || $ANS == "y" || $ANS == "Yes" || $ANS == "yes" ]]
            then
                mkdir $HOME/AndroidDevice
                echo "Mount point is created."
        fi

        if [[ $ANS == "N" || $ANS == "n" || $ANS == "No" || $ANS == "no" ]]
            then
                echo -e "We do not create mount point."
                exit 2
        fi
fi

go-mtpfs ~/AndroidDevice &
# Note: If go-mtpfs is not ran in the background (with & at the end), another console will be needed to browse the device and unmount the device (when finished).
echo "Device is mounted."
echo "Do you wish unmount it? Yes=press Y key" ## Нелогично, т.к. нажав N оно всеравно отмонтируется. Соответственно либо просто писать "Press any key to unmount…", либо делать обработку ввода как с созданием точки монтирования.
read B
fusermount -u ~/AndroidDevice

## echo "Unmount is Ok." ## А точно ли ОК?? СтОит, все-же, проверить код завершения предыдущей комманды

if [ $(echo $?) != "0" ]
    then
        echo "Unmount failed"
        exit 3
fi

echo "Unmount is Ok."
exit 3 ## Не "exit 3", а "exit 0", т.к. это нормальное завершение работы. Нулевой код завершения означает правильное завершение, любой НЕнулевой - ошибку в выполнении.


Ответить | Правка | К родителю #16 | Наверх | Cообщить модератору

20. "bash скрипт для монтирования андроид телефона"  +/
Сообщение от Isothiocyanate (ok), 16-Янв-21, 11:18 

> if [ -d $HOME/AndroidDevice ]
>     then
>   ANS=A  ## Не вкурил: что это?? Зачем?
>   echo "Mount point exist."
>     else
>   echo "Make dir AndroidDevice in your home catalog? [Y]es/[N]o"
>   read ANS
> fi

Если ANS не присвоить значение отличное от Y/N - программа входит в цикл и выходит на выход exit2.

>[оверквотинг удален]
>     mkdir $HOME/AndroidDevice
>     echo "Mount point is created."
>   fi
>   if [[ $ANS == "N" || $ANS == "n" ||
> $ANS == "No" || $ANS == "no" ]]
>    then
>     echo -e "We do not create mount point."
>     exit 2
>   fi
> fi

У меня тоже был вначале вложенный цикл. Но программа нормально не выполняла вложенный цикл, поэтому пришлось разбить на 2 отдельных.

>[оверквотинг удален]
> # Note: If go-mtpfs is not ran in the background (with &
> at the end), another console will be needed to browse the
> device and unmount the device (when finished).
> echo "Device is mounted."
> echo "Do you wish unmount it? Yes=press Y key" ## Нелогично, т.к.
> нажав N оно всеравно отмонтируется. Соответственно либо просто писать "Press any
> key to unmount…", либо делать обработку ввода как с созданием точки
> монтирования.
> read B
> fusermount -u ~/AndroidDevice

А это стоит добавить.

>[оверквотинг удален]
> if [ $(echo $?) != "0" ]
>  then
>   echo "Unmount failed"
>   exit 3
> fi
> echo "Unmount is Ok."
> exit 3 ## Не "exit 3", а "exit 0", т.к. это нормальное
> завершение работы. Нулевой код завершения означает правильное завершение, любой НЕнулевой
> - ошибку в выполнении.
>

Ответить | Правка | Наверх | Cообщить модератору

21. "bash скрипт для монтирования андроид телефона"  +/
Сообщение от DiabloPC_пробегалemail (?), 16-Янв-21, 11:40 

> Если ANS не присвоить значение отличное от Y/N - программа входит в
> цикл и выходит на выход exit2.
> У меня тоже был вначале вложенный цикл. Но программа нормально не выполняла
> вложенный цикл, поэтому пришлось разбить на 2 отдельных.

По обеим пунктам: НЕ ВЕРЮ!!!
Что первое, что второе может не работать, либо вылететь в ошибки только при наличии ошибок или очепяток в самом скрипте. Но в таком случае нужно не добавлять несколько лишних и естественно нелогичных действий в код, а искать свои косяки.

Ответить | Правка | Наверх | Cообщить модератору

22. "bash скрипт для монтирования андроид телефона"  +/
Сообщение от Isothiocyanate (ok), 16-Янв-21, 18:42 
> По обеим пунктам: НЕ ВЕРЮ!!!
> Что первое, что второе может не работать, либо вылететь в ошибки только
> при наличии ошибок или очепяток в самом скрипте. Но в таком
> случае нужно не добавлять несколько лишних и естественно нелогичных действий в
> код, а искать свои косяки.

Я думаю там могли быть какие-то ошибки, вызванные моим незнанием bash, которые я самостоятельно не смог устранить, поэтому переписал весь скрипт через одно место, лишь бы работало и выложил на форум то что вышло в итоге.

Возможно, если бы я сохранил вариант с воложенным циклом, ты бы смог найти там ошибку, которую в упор не видел я. В принцмпе, bash ругался на fi большего внешнего цикла и на конец программы, на последнюю строку тоже.

Я правильно понял что знак ! равносилен then ?

Ответить | Правка | Наверх | Cообщить модератору

24. "bash скрипт для монтирования андроид телефона"  +/
Сообщение от DiabloPC_пробегалemail (?), 17-Янв-21, 02:17 
> Я правильно понял что знак ! равносилен then ?

Нет, не правильно.
"!" это отрицание, т.е логическое НЕ

## если каталог существует
if [ -d /path/to/dir ]

## если каталог НЕ существует
if ! [ -d /path/to/dir ]

А ошибки могут быть настолько примитивные, что аж смешно: я вот ту конструкцию с несколькими условиями когда проверял сам прибалдел:  вроде же примитивная хрень, а материлось, как оказалось я умудрился пропустить пробел перед закрывающей скобкой и при этом еще и в упор это не мог разглядеть 😂😂

Ответить | Правка | Наверх | Cообщить модератору

19. "bash скрипт для монтирования андроид телефона"  +/
Сообщение от DiabloPC_пробегалemail (?), 16-Янв-21, 04:20 
По поводу вот этих двух строк, если делать без обработки ввода

> echo "Do you wish unmount it? Yes=press Y key"
> read B

Это можно сделать вот так:

read -n 1 -r -s -p $'Press any key to unmount...\n'

Ответить | Правка | К родителю #16 | Наверх | Cообщить модератору

23. "bash скрипт для монтирования андроид телефона"  +/
Сообщение от Isothiocyanate (ok), 16-Янв-21, 19:46 
> Это можно сделать вот так:
>
read -n 1 -r -s -p $'Press any key to unmount...\n'

DiabloPC, может книгу какую посоветуешь? как-то по интернет статьям учиться не то.

Ответить | Правка | Наверх | Cообщить модератору

25. "bash скрипт для монтирования андроид телефона"  +/
Сообщение от DiabloPC_пробегалemail (?), 17-Янв-21, 04:03 
Первое что приходит в голову это ABS
https://tldp.org/LDP/abs/abs-guide.pdf
Ответить | Правка | Наверх | Cообщить модератору

26. "bash скрипт для монтирования андроид телефона"  +/
Сообщение от DiabloPC_пробегалemail (?), 17-Янв-21, 04:05 
Ну а скрипт советую попробовать переписать с нуля и если что не будет получаться, выкладывать сюда - будем разбираться
Ответить | Правка | К родителю #23 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Спонсоры:
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2021 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру