Bash Shell脚本嵌套的If/Else语句
bash命令中嵌套的if/else语句有问题。第一组代码工作得很好,但在这之前添加Bash Shell脚本嵌套的If/Else语句,bash,shell,mount,Bash,Shell,Mount,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 func
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):
我在第一个if行中尝试了几个不同的版本(第一行是[$3==“Yes”])。但许多人给出了错误,主要是关于一元运算符的错误
问题是它现在没有给出错误,它似乎只是跳到第二个else并退出程序,而不是创建文件夹或装载驱动器
我在网上花了很多时间研究这个问题,但没有能够纠正这个问题,因此非常感谢您的任何建议。您在
read
中扫描值的语法不正确,我建议完全使用不同的变量名,这样您就可以区分什么是脚本参数,什么不是脚本参数
尝试:
不能像这样为位置参数赋值,必须使用
$3
以外的名称。非常好。非常感谢你!真是一种享受!伟大的请记住,如果它对你有用的话
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
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