2017-04-17 47 views
-4

我试图创建一个允许用户追加已存在的目标文件的文件副本版本。该程序有两个参数:源文件和目标文件。Bash shell程序

如果目标文件已经存在,它必须要求用户在三个选项之间进行选择:覆盖目标文件,追加目标文件或取消。

应该进行以下参数检查:

  • 参数的个数必须是2
  • 源文件必须是常规文件。
  • 如果目标文件存在,它必须是常规文件。

任何人都可以帮助我如何完成这项任务吗?

+0

,你做'CP的资源文件destfile'。如果他们想追加,你可以执行'cat sourcefile >> destfile'。 – Barmar

+0

我建议看看'help test'来做(a),(b)和(c)。 – Cyrus

回答

0

尝试回答你4个或5个问题:在未来,请向每个职位的单一问题,并试图在回答它作为所有这一切都是很容易通过谷歌回答。

如何检查how many arguments are passed到脚本


Information on "test"。您还可以使用命令man test到RTFM

一些例子:

  1. 测试,如果它是一个普通文件(从以前的链接)返回真/假:

    [-f MYFILE]

  2. 测试文件是否存在(再次从一个链接)返回真/假:

    [-a MYFILE]


How to read user input

我认为, “内联” 的bash这里的版本是非常好的,为您的需求:

read -p "Do you want to (C)opy, (A)ppend, or (E)nd? " answer 
case ${answer:0:1} in 
    c|C) 
     cp file1 file2 
    ;; 
    a|A) 
     cat file1 >> file2 
    ;; 
    *) 
     echo "That's not an option, yo" 
    ;; 
esac 

如何复制文件(用户选择后)

cp file1 file2 

如何如果用户想拷贝追加一个文件(用户做出选择后)

cat file >> file2 
+0

*指向http://stackoverflow.com/help/how-to-answer*中的“回答严重问题”标题 –