感谢您的时间。
我对SHELL SCRIPT有一个要求,我要获取用户输入并将其与文本文件中的内容列表进行比较,看看输入是否与该行中的任何一行匹配文本文件。
以下是场景: cat fruits.txt 苹果 橙子 芒果 葡萄
输入水果名称:醋栗 那不在商店里!! 输入水果名称:apple 欢迎来到苹果世界!
非常感谢任何帮助。 :(
答案 0 :(得分:0)
我们假设您有文件fruitlist.txt,其中存储了水果(或其他)的列表。
fruitlist.txt的内容:
red apple
green apple
orange
mango
grapes
请注意,每个水果后都有换行符。
以下bash脚本需要水果列表文件的路径作为它的第一个参数:
#!/bin/bash
listFile=$1
if [ -f "$listFile" ]; then
echo "Type 'q' or 'Q' to exit the script."
echo "-----------------------------------"
while true; do
read -p "Type the fruit name: " fruit
if [ "$fruit" = "q" ] || [ "$fruit" = "Q" ]; then
break
elif [ "$(grep "$fruit" "$listFile")" = "$fruit" ]; then
echo "The fruit '$fruit' is in the list."
else
echo "The fruit '$fruit' is not in the list."
fi
done
echo "-----------------------------------"
else
echo "No fruit list file specified."
fi
exit 0
声明
if [ -f "$listFile" ]; then
测试水果列表文件是否存在。
命令
read -p "Type the fruit name: " fruit
将水果名称读入变量水果。
第一个if in the endless while循环
if [ "$fruit" = "q" ] || [ "$fruit" = "Q" ]; then
break
检查用户是否要退出脚本。以下
elif [ "$(grep "$fruit" "$listFile")" = "$fruit" ]; then
echo "The fruit '$fruit' is in the list."
else
echo "The fruit '$fruit' is not in the list."
fi
检查输入的水果是否可以在水果列表文件中找到。单独的grep命令会找到包含水果名称的每一行。让我们说你有一个水果有两个名称部分,如红苹果'绿苹果'用户输入红色'如果是真的。现在"" =""在if语句中确保,如果用户输入' red',则该语句将不为真,因此在列表中找不到水果。