在bash中创建一个文件,如果无法创建,我如何利用2> / dev / null?

我正在创建一个脚本,它将计算有关目录的一些不同信息.我必须向用户提供创建文件的选项.完成了许多不同的文件检查,但特别是给我一个悲伤:

如果文件名被选中但不存在,则脚本将尝试创建它.如果创建失败,将通知用户无法创建.

所以我有一个变量(文件),这是用户给他希望创建的文件的名称.然后我用:

echo -n "Creating the file: '$file'"
touch "$file"
if [ -e "$file" ]; then
  echo "..........File created"
  else echo"...........Creation failed"
fi

> 2 / dev / null是否在触摸线之后?什么是正确的语法来抑制错误消息,只显示创建文件:(文件)………创建失败?

非常感谢

最佳答案
你需要使用2>而不是> 2来重定向标准错误.

touch "$file" 2> /dev/null

但即使有了这个改变,你的脚本也有一个错误:

假设触摸失败,因为文件存在但您没有权限触摸它.接下来,使用-e check检查文件是否存在,并返回true,然后打印File created,这是不正确的.

要解决此问题,您需要检查touch命令的返回值:

if  touch "$file" 2> /dev/null ; then
echo "..........File created"
else
echo "..........File failed"

转载注明原文:在bash中创建一个文件,如果无法创建,我如何利用2> / dev / null? - 代码日志