繁体   English   中英

Shell脚本嵌套的If / Else语句

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM