我的命令适用于终端,但不适用于 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 的代码,我切换到sh.我将-e选项移到脚本中,因此运行脚本的确切方式无关紧要。

也许以某种方式最好取出sudo命令,如果用户缺乏权限或无法使用sudo运行脚本,则让脚本失败。那么脚本也适合作为root运行。

相关内容

最新更新