如何将用户输入与文本文件中的内容进行比较?

如何将用户输入与文本文件中的内容进行比较?

我正在制作一个脚本,允许用户将其设置保存在文本文件中。如果他们想使用保存的设置,则需要输入设置的名称。然后脚本将比较用户的输入以在文本文件中查找名称。如果找到匹配的名称,它将从该文本文件中提取整行。到目前为止我的代码看起来像这样。

echo enter setting name
    read name
    #count=0
    while IFS= read line
    do
        if [ "$name" == "$settingName" ]
        then
            cp **/*"$ft1" $dir1
        else
            echo "file doesnt exist"
        fi
    done < preco.txt

我用来保存变量的代码:

echo save settings?
    read decision
    if [ "$decision" = "y" ]
        then
        echo enter settings name
        read settingName

        echo $settingName $dir1 $ft1 >> preco.txt
    else
        echo "bye"
        exit

我希望将 $dir1 和 $ft1 输入到 cp 中

答案1

如果您包含设置文件的示例,那就太好了,尽管我们可以从保存设置的代码中猜测。

您的代码的一个问题是没有"$settingName".

假设您的参数中没有空格,这样的东西应该可以工作。

echo enter setting name
read name
found=false
while read settingName dir1 ft1
do
    if [ "$name" == "$settingName" ]
    then
        cp "$ft1" $dir1
        found=true
    fi
done < preco.txt
if ! $found; then
    echo "$name not found"
fi

该语句read settingName dir1 ft1会将文件中的三个字段读取preco.txt到命名变量中。

另一点是,您不想为每一行不匹配的行显示错误消息,您必须通读该文件,并且仅在没有行匹配时才显示错误消息。

相关内容