我在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 =="是"]是第一行)。但许多人都犯了错误,主要是关于一元运营商的预期。
问题是它现在没有出错,它似乎跳到第二个并退出程序,而不是创建文件夹或安装驱动器。
我花了很多时间在网上研究这个问题并且无法纠正这个问题,所以任何建议都会非常感激。
答案 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