Shell 脚本嵌套 If/Else 语句

Shell script nested If/Else statement

我在 bash 命令中嵌套 if/else 语句时遇到问题。第一组代码运行完美,但是在此之前添加 read -p 部分时,有些东西被扔掉了。

有效代码:

#!/bin/bash

(
echo p
echo q
) | sudo fdisk 

if [ ! -d "" ]; then
  if [ -f "" ]; then
    echo " exists and is not a directory"
    exit 1
  else
    mkdir ""
  fi
fi

function mountDisk ()
{
    sudo mount -o loop,offset=$((2048*512))  
}

mountDisk  

所以这工作正常,显示了 fdisk 信息并继续创建文件夹和安装驱动器。

在收到信息后添加选项以继续安装时我遇到了问题。

代码的更改部分是(-f 被认为是不必要的,因此被删除):

read -p "Mount  ?" 
if [ "" = "Yes" ]; then
    if [ ! -d "" ]; then
        echo " exists and is not a directory"
        exit 1
    else
        mkdir ""
    fi
else
    exit 1
fi

我在第一个 if 行尝试了几个不同的版本([ $3 == "Yes" ] 是第一个)。但是很多报错,主要是关于unary operator expected.

问题是现在不报错了,好像是跳到第二个else退出程序,没有创建文件夹,也没有挂载驱动。

我花了很多时间在线研究这个问题,但未能解决这个问题,因此非常感谢任何建议。

您在 read 中扫描值的语法不正确,我建议您完全使用不同的变量名,这样您就可以区分什么是脚本参数,什么不是脚本参数。

尝试:

read -p "Mount  ? " userprompt
if [ "$userprompt" = "Yes" ]; then
    if [ ! -d "" ]; then
        echo " exists and is not a directory"
        exit 1
    else
        mkdir ""
    fi
else
    exit 1
fi