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