我正在尝试将两个截然不同的脚本合并在一起,以实现整合和易用性。我知道我希望这些脚本的外观和操作方式,但我需要一些入门帮助。以下是脚本的流程和外观:
输入文件将是具有以下语法的标准文本文件:
#Vegetables
Broccoli|Green|14
Carrot|Orange|9
Tomato|Red|7
#Fruits
Apple|Red|15
Banana|Yellow|5
Grape|Purple|10
该脚本将采用该文件的输入。它会忽略注释部分,但使用它们来指示输出。因此,基于它是 Vegetable 的事实,它将使用分隔符 (|) 之间列出的值执行特定功能。然后它会转到 Fruits 并根据该分隔符对值执行不同的操作。也许,我会将蔬菜/水果添加到其中一个值,并根据该值在此循环中读取文件时执行该功能。感谢您为开始此工作提供的帮助。
更新: 所以我尝试实现 IFS 设置并想到了更合乎逻辑的安排。输入文件的参数中将显示“类别”。所以设置将是这样的:
Vegetable|Carrot|Yellow
Fruit|Apple|Red
Vegetable|Tomato|Red
从那里,脚本将读入行并执行该功能。所以在 shell 中基本上是这种类型的设置:
while read -r category item color
do
if [[ $category == "Vegetable" ]] ; then
echo "The $item is $color"
elif [[ $category == "Fruit" ]] ; then
echo "The $item is $color"
else
echo "Bad input"
done < "$input_file"
类似的事情......我只是很难将它们放在一起。
最佳答案
使用read来输入行。对它们的前缀做一个 case 语句:
{
while read DATA; do
case "$DATA" in
\#*) ... switch function ...;;
*) eval "$FUNCTION";;
esac
done
} <inputfile
根据您的问题,您可能需要在读取之前尝试设置 $IFS 并一次性读取多个变量。
关于linux - 根据文件输入执行不同功能的 Shell 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18140062/