我的命令适用于终端但不适用于 pi 中的脚本

My command works on terminal but doesnt work on script in pi

所以我正在尝试执行命令: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 也没有用。

编辑 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

您移动了 -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-specific 代码,我切换到 sh。我将 -e 选项移到了脚本中,因此您 运行 脚本的精确程度并不重要。

也许在某种程度上,删除 sudo 命令会更好,如果用户缺少权限或无法使用 sudo 运行 脚本,则让脚本失败].那么脚本也适合运行ning as root.