【问题标题】:Create empty file, prompting if the file already exists?创建空文件,提示文件是否已经存在?
【发布时间】:2015-07-30 07:15:14
【问题描述】:

如果我想覆盖已经存在的文件,我如何使用脚本询问我是否要覆盖该文件来触摸或创建新文件?脚本应该是什么样的?

【问题讨论】:

  • 欢迎来到 Stack Overflow。请尽快阅读About 页面。您将如何获取文件名(命令行参数或提示符)?您如何读取文件名,或者如何获取命令行参数?哪个命令测试文件是否存在?你如何创建一个文件? noclobber 选项有什么作用?它有帮助吗?你试过什么? 特别是你尝试过什么?你知道Bash 手册在哪里吗?你读过吗?这样做是个好主意吗? (答案是:也许不会——但很快你就应该这样做。)
  • 请分享您在这方面的进展,以及您遇到的错误,正如 Jonathan Leffler 所解释的那样。帮助是给那些首先帮助自己的人。我们从错误中吸取教训,但首先你必须犯错误。

标签: linux bash shell scripting


【解决方案1】:

可能是这样的:

#!/bin/bash

if [ -e "$1" ]; then
    echo "Want to overwrite? (Y/n)"
    read ANSWER
    [ "$ANSWER" = "Y" ] && touch "$1" || echo "Ok"
else
    echo "Creating"
    touch "$1"
fi

将其称为:./script <filename>

【讨论】:

  • 请注意touch 不会覆盖现有文件;它会更改文件的“最后修改”时间,而不会损坏其内容。
  • 您可能还观察到[ x = y ] && touch x || echo OK 回显“OK”和[ x = x ] && touch z || echo OK 触摸(创建)z 并且没有回显。因此,不清楚“OK”是什么意思(我认为“OK;我没有触摸文件”;消息可能更清楚)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-10-28
  • 2018-02-26
  • 2021-11-28
  • 2012-03-13
  • 1970-01-01
  • 1970-01-01
  • 2023-01-25
相关资源
最近更新 更多