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