IT技术博客大学习 共学习 共进步

shell文件存在相关判断参数

Zhang Jiuan' Notes 2010-01-26 16:52:50 浏览 4,701 次

The tests below are test conditions provided by the shell:

    * -b file = True if the file exists and is block special file.
    * -c file = True if the file exists and is character special file.
    * -d file = True if the file exists and is a directory.
    * -e file = True if the file exists.
    * -f file = True if the file exists and is a regular file
    * -g file = True if the file exists and the set-group-id bit is set.
    * -k file = True if the files’ “sticky” bit is set.
    * -L file = True if the file exists and is a symbolic link.
    * -p file = True if the file exists and is a named pipe.
    * -r file = True if the file exists and is readable.
    * -s file = True if the file exists and its size is greater than zero.
    * -s file = True if the file exists and is a socket.
    * -t fd = True if the file descriptor is opened on a terminal.
    * -u file = True if the file exists and its set-user-id bit is set.
    * -w file = True if the file exists and is writable.
    * -x file = True if the file exists and is executable.
    * -O file = True if the file exists and is owned by the effective user id.
    * -G file = True if the file exists and is owned by the effective group id.
    * file1 -nt file2 = True if file1 is newer, by modification date, than file2.
    * file1 ot file2 = True if file1 is older than file2.
    * file1 ef file2 = True if file1 and file2 have the same device and inode numbers.
    * -z string = True if the length of the string is 0.
    * -n string = True if the length of the string is non-zero.
    * string1 = string2 = True if the strings are equal.
    * string1 != string2 = True if the strings are not equal.
    * !expr = True if the expr evaluates to false.
    * expr1 -a expr2 = True if both expr1 and expr2 are true.
    * expr1 -o expr2 = True is either expr1 or expr2 is true.

Shell中的数据问题

   ArrayName=(”element 1″ “element 2″ “element 3″)  #数组定义
   echo ${#ArrayName[@]}
  echo “The number of elements in the array is ${#ArrayName[*]}”    
   
    例子
    #!/bin/bash
    # define array
    # name server names FQDN
    NAMESERVERS=(”ns1.nixcraft.net.” “ns2.nixcraft.net.” “ns3.nixcraft.net.”)
 
    # get length of an array
     tLen=${#NAMESERVERS[@]}
 
    # use for loop read all nameservers
    for (( i=0; i<${tLen}; i++ ));
    do
      echo ${NAMESERVERS[$i]}
    done

   Sample output:

     ns1.nixcraft.net.
     ns2.nixcraft.net.
     ns3.nixcraft.net.

建议继续学习

  1. 海量小文件存储 (阅读 9,701)
  2. 其实,文件也可以truncate (阅读 8,440)
  3. 你可能不知道的Shell (阅读 8,161)
  4. 在 shell 脚本里打日志 (阅读 6,041)
  5. 面向对象的Shell脚本 (阅读 5,981)
  6. Bash如何取得当前正在执行的脚本的绝对路径? (阅读 5,841)
  7. 关于Linux的文件系统cache (阅读 5,820)
  8. Perl 倒行分析文件方法。perl读文本文件,从末尾往前读. (阅读 5,500)
  9. 使用Shell快捷键助你一臂之力 (阅读 5,382)
  10. C/C++循环获取文件中的每行数据(别以为很简单!) (阅读 5,100)