![如何将用户输入与文本文件中的内容进行比较?](https://linux22.com/image/153395/%E5%A6%82%E4%BD%95%E5%B0%86%E7%94%A8%E6%88%B7%E8%BE%93%E5%85%A5%E4%B8%8E%E6%96%87%E6%9C%AC%E6%96%87%E4%BB%B6%E4%B8%AD%E7%9A%84%E5%86%85%E5%AE%B9%E8%BF%9B%E8%A1%8C%E6%AF%94%E8%BE%83%EF%BC%9F.png)
我正在制作一个脚本,允许用户将其设置保存在文本文件中。如果他们想使用保存的设置,则需要输入设置的名称。然后脚本将比较用户的输入以在文本文件中查找名称。如果找到匹配的名称,它将从该文本文件中提取整行。到目前为止我的代码看起来像这样。
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
到命名变量中。
另一点是,您不想为每一行不匹配的行显示错误消息,您必须通读该文件,并且仅在没有行匹配时才显示错误消息。