【问题标题】:Shell script for finding a file name using a string input使用字符串输入查找文件名的 Shell 脚本
【发布时间】:2024-01-10 22:32:01
【问题描述】:

嗨,我开始学习如何制作和使用 shell 脚本,我想要制作的 shell 脚本之一是一个 shell 脚本,它接收来自用户的字符串输入,该用户要求输入文件名,并报告是否文件是否存在。我不确定该怎么做。 这是我写的:

#!/bin/bash
read string1
 echo${#string1} ; grep

我不知道输入 grep 后该怎么办。 请帮忙。

【问题讨论】:

  • grep 查找文件内容中出现的字符串。如果您只想测试是否存在具有给定名称的文件,则不需要 grep。 if test -e ${string1}; then echo The file ${string1} exists; fi 可以。
  • @MarkPlotnick,将其添加为答案

标签: linux string bash shell grep


【解决方案1】:

grep 查找出现在文件内容中的字符串。如果你只是想测试一个给定名称的文件是否存在,grep 不是必需的。

#!/bin/bash
read string1    
if test -e ${string1}; then
    echo The file ${string1} exists
fi

会的。

[按照@glenn jackman 的建议从评论复制到答案]

【讨论】:

  • -e 将测试文件是否存在(文件被理解为目录、常规文件、fifo、链接、you-name-it)。我认为您应该将此添加到您的答案中,以使其更加全面和非常好。也许添加一些其他测试,为什么不摘录help test。此外,由于该问题已明确标记为bash,因此您可以使用双方括号[[ ... ]]。还有一件事,使用更多引号。祝你好运:).
【解决方案2】:

使用文件测试操作符代替 grepping 名称:

#!/bin/bash
printf "Enter a filename: "
read string1

if [[ -f "$string1" ]]; then
    echo "The file '$string1' exists."
else
    echo "The file '$string1' does not exist!"
fi

不要忘记引用变量,以便正确解析包含空格和奇数字符的名称。

$ bash test.sh 
Enter a filename: hash.pl
The file 'hash.pl' exists.

$ bash test.sh 
Enter a filename: odd file.txt
The file 'odd file.txt' exists.

$ bash test.sh 
Enter a filename: somefile
The file 'somefile' does not exist!

【讨论】:

  • 感谢大家的帮助,感谢大家的帮助!
最近更新 更多