验证 Linux 中的用户输入

Validating user input in Linux

我需要在 Linux 中编写程序,以便在文件夹中找到图片。像 JPEG、PNG、BMP。而且我需要让它对无效输入具有鲁棒性。就像当我写 LoL 而不是 png 时,它会写 error.Here is my code yet:

#!/bin/bash

echo "Input what you are searching for :"
read subor

echo "-----------------------"

if [ $subor != "png" ];
then 
    echo
    echo "Nebol zadaný vstup pre PNG"
    echo
else
    Path=$ cd /home/zps/Pictures/
    command=$ find -type f -exec file --mime-type {} \; | awk '{if ($NF == "image/png") print [=11=]}' | wc -l
fi

if [ $subor != "jpeg" ];
then 
    echo
    echo "Nebol zadaný vstup pre JPEG"
    echo
else
    Path=$ cd /home/zps/Pictures/
    command=$ find -type f -exec file --mime-type {} \; | awk '{if ($NF == "image/jpeg") print [=11=]}' | wc -l
fi

if [ $subor != "bmp" ];
then 
    echo
    echo "Nebol zadaný vstup pre BMP" 
    echo
else
    Path=$ cd /home/zps/Pictures/
    command=$ find -type f -exec file --mime-type {} \; | awk '{if ($NF == "image/bmp") print [=11=]}' | wc -l
fi

echo "-----------------------"

我尝试了一些来自互联网的东西,但就是做不到。我试着编写了一些代码,但它确实有效,我只是无法弄清楚当用户输入我想要的其他内容时如何出错。我只需要 JPEG、PNG 和 BMP。

使用case 语句匹配所有允许的类型。然后你可以使用 *) case 来捕获无效输入。

case "$subor" in
    png) ... ;;
    jpeg) ... ;;
    bmp) ... ;;
    *) echo "Please enter png, jpeg, or bmp" ;;
esac