[英]Shell script nested If/Else statement
我在bash命令中的嵌套if / else语句有问题。 第一组代码运行良好,但是在此之前添加read -p
部分时,会抛出一些异常。
起作用的代码:
#!/bin/bash
(
echo p
echo q
) | sudo fdisk $1
if [ ! -d "$2" ]; then
if [ -f "$2" ]; then
echo "$2 exists and is not a directory"
exit 1
else
mkdir "$2"
fi
fi
function mountDisk ()
{
sudo mount -o loop,offset=$((2048*512)) $1 $2
}
mountDisk $1 $2
这样就可以正常工作,显示fdisk信息并继续创建文件夹并安装驱动器。
当在获得信息后添加选项以继续安装时,我遇到了问题。
代码的更改部分为(-f被删除,因为它被认为是不必要的):
read -p "Mount $1 ?" $3
if [ "$3" = "Yes" ]; then
if [ ! -d "$2" ]; then
echo "$2 exists and is not a directory"
exit 1
else
mkdir "$2"
fi
else
exit 1
fi
我已经在第一个if行上尝试了几种不同的版本([$ 3 ==“ Yes”]是第一个)。 但是很多人给出了错误,主要是关于一元运算符的预期错误。
问题是它现在不给出错误,只是跳到第二个错误并退出程序,而不是创建文件夹或装入驱动器。
我已经花了很多时间在网上进行研究,但仍无法解决问题,因此,任何建议都将不胜感激。
您扫描read
值中的语法不正确,建议您完全使用其他变量名,以便您区分脚本参数是和不是。
尝试:
read -p "Mount $1 ? " userprompt
if [ "$userprompt" = "Yes" ]; then
if [ ! -d "$2" ]; then
echo "$2 exists and is not a directory"
exit 1
else
mkdir "$2"
fi
else
exit 1
fi
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.