首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何让bash忽略文件非创建

如何让bash忽略文件非创建
EN

Stack Overflow用户
提问于 2012-04-15 08:33:54
回答 4查看 2.6K关注 0票数 1

在(ba)sh脚本中,如何忽略找不到文件的错误?

我正在编写一个从stdin读取(部分)文件名的脚本,使用:

代码语言:javascript
代码运行次数:0
运行
复制
read file; $FILEDIR/$file.sh

我需要给脚本的功能,以拒绝不存在的文件名。

例如:

$UTILDIR不包含script.sh用户类型脚本

脚本尝试访问$UTILDIR/script.sh并失败,原因是

代码语言:javascript
代码运行次数:0
运行
复制
./run.sh: line 32: /utiltest/script.sh: No such file or directory

如何让脚本打印错误,但不打印“正常”错误而继续执行脚本?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-04-15 08:55:02

您可以使用@gogaman答案中的代码测试该文件是否存在,但您可能更感兴趣的是知道该文件是否存在和可执行。为此,您应该使用-x测试而不是-e

代码语言:javascript
代码运行次数:0
运行
复制
if [ -x "$FILEDIR/$file.sh" ]; then
   echo file exists
else
   echo file does not exist or is not executable
fi
票数 2
EN

Stack Overflow用户

发布于 2012-04-15 08:48:04

代码语言:javascript
代码运行次数:0
运行
复制
if [ -e $FILEDIR/$file.sh ]; then
 echo file exists;
else
 echo file does not exist;
fi
票数 2
EN

Stack Overflow用户

发布于 2012-04-15 08:57:42

在这里,我们可以定义一个仅当文件存在时才运行的shell过程

代码语言:javascript
代码运行次数:0
运行
复制
run-if-present () {
  echo $1 is really there
}

[ -e $thefile ] && run-if-present $thefile
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10158596

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档