Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash Shell脚本嵌套的If/Else语句_Bash_Shell_Mount - Fatal编程技术网

Bash Shell脚本嵌套的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

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):

我在第一个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