Моя команда работает на терминале, но не работает на скрипте в пи - PullRequest
0 голосов
/ 06 февраля 2020

, поэтому я пытаюсь выполнить команду: sudo mount /dev/sda1 /mnt/usb -o uid=pi,gid=pi

Он работает и подключает мой USB к каталогу / mnt / usb .

, так что я хотел создать скрипт, который в основном это:

#!/bin/bash
    sudo mount /dev/sda1 /mnt/usb -o uid=pi,gid=pi
    echo "Script Worked"

и присвоил ему псевдоним " usbmount ".

Когда я вызываю "usbmount" в терминале, я получаю вывод "Script Worked"

, но USB не подключен. Я убедился, что команда работает, я посмотрел на данные fstab и они тоже правильные.

Чего мне не хватает? В чем проблема?

Редактировать: Когда я пробовал скрипт с #!/bin/bash -e, он говорит mount: uid=pi,gid=pi: mount point does not exist.

Редактировать 2: добавление sudo mkdir /media/usb; sudo chown -R pi:pi /media/usb в начале сценария, к сожалению, также не сработало.

Edit 3: * обновленный сценарий выглядит следующим образом:

#!/bin/bash -e
    sudo mkdir /mnt/usb; sudo chown -R pi:pi /mnt/usb
    sudo mount -o /dev/sda1 /mnt/usb uid=pi,gid=pi


echo "Script Worked"

и Я получаю вывод:

mkdir: cannot create directory ‘/mnt/usb’: File exists
mount: uid=pi,gid=pi: mount point does not exist.
Script Worked

1 Ответ

0 голосов
/ 08 февраля 2020

Вы переместили параметр -o, не перемещая его аргумент. Переключатель -o и строка сразу после нее представляют собой единицу.

Также попробуйте mkdir -p, чтобы избежать получения сообщения об ошибке. Однако обратите внимание, что в сообщении об ошибке указывается, что команда пыталась использовать uid=pi,gid=pi в качестве точки монтирования; возможно, mkdir был совершенно ненужным.

#!/bin/sh

set -e

sudo mkdir -p /mnt/usb
sudo chown -R pi:pi /mnt/usb
sudo mount -o uid=pi,gid=pi /dev/sda1 /mnt/usb

echo "Script Worked"

Поскольку здесь нет кода Bash -specifi c, я переключился на sh. Я переместил параметр -e в сценарий, так что не имеет значения, как именно вы запускаете сценарий.

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

...