简单shell 编程求助 (如何判断两个 pathname 是否指向同一个文件?)

简单shell 编程求助 (如何判断两个 pathname 是否指向同一个文件?)

Create a program my_cp.sh which will copy one file to another. The program will accept two command line arguments, a source and a destination. Check for the following

     situations:

      a) It should make sure that the source and destination do not reference the same file.

      b) The program should verify that the destination is a file.

      c) The program should verify that the source file exists.  ok

      d) The program should check to see if the destination exists. If it does, ask the user if he or she wants to overwrite it.
是我们的作业,如果用cp命令的话起不是a, b,c,d都会自己它自己给解决,如果要写shell来实现,如何判断$1 $2是不是同一个文件
如何判断$2是不是合法文件名?
谢谢...
      
1. 如果$1跟$2所表示的两个文件的pathname一样,肯定就是同一个文件
2. Linux中“/”是路径分割符,其他字符都可以包含在文件名中      
would you please say it a little more clearly , thanks      
举例说明:
复制内容到剪贴板
代码:
if [ "$1" = "$2" ]; then
    echo "Error: two pathnames point to the same file. Exitting ..."
    exit 1
fi
      
合法的文件名不用判断      
[QUOTE=dearvoid]举例说明:
复制内容到剪贴板
代码:
if [ "$1" = "$2" ]; then
     echo "Error: two pathnames point to the same file. Exitting ..."
     exit 1
fi
[/QUOTE] 但是cp命令两个参数既可以是绝对路径,也可以是相对路径啊
如果只是从字符来判断,不行吧?
麻烦您了,谢谢      
说的好. 不过按照你的要求也太麻烦了些, 还要考虑 symbolic link 和 hard link, 有点儿难度呢. 给你个链接参考一下: 如何定位 shell 脚本本身所在的绝对路径      
如果目标文件存在(如果是 symbolic link, 则要找到其指向的文件), 可以比较两个文件的 inode number, 这应该是很准确的了