我的命令适用于终端但不适用于 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
.
所以我正在尝试执行命令: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
.