Shell脚本嵌套If / Else语句

时间:2017-03-20 14:24:08

标签: bash shell mount

我在bash命令中遇到嵌套if / else语句的问题。第一组代码工作得很好,但是在添加#!/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 部分之前,这件事就被抛弃了。

有效的代码:

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

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

在提供信息后添加选项继续安装时我会遇到问题。

代码的更改部分是(-f被认为是不必要的):

{{1}}

我在第一行if上尝试了几个不同的版本([$ 3 =="是"]是第一行)。但许多人都犯了错误,主要是关于一元运营商的预期。

问题是它现在没有出错,它似乎跳到第二个并退出程序,而不是创建文件夹或安装驱动器。

我花了很多时间在网上研究这个问题并且无法纠正这个问题,所以任何建议都会非常感激。

1 个答案:

答案 0 :(得分:0)

您在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