1. 1. shell判断文件,目录是否存在或者具有权限
    2. 2. #!/bin/sh
    3. 3.
    4. 4. myPath="/var/log/httpd/"
    5. 5. myFile="/var /log/httpd/access.log"
    6. 6.
    7. 7. # 这里的-x 参数判断$myPath是否存在并且是否具有可执行权限
    8. 8. if [ ! -x "$myPath"]; then
    9. 9. mkdir "$myPath"
    10. 10. fi
    11. 11.
    12. 12. # 这里的-d 参数判断$myPath是否存在
    13. 13. if [ ! -d "$myPath"]; then
    14. 14. mkdir "$myPath"
    15. 15. fi
    16. 16.
    17. 17. # 这里的-f参数判断$myFile是否存在
    18. 18. if [ ! -f "$myFile" ]; then
    19. 19. touch "$myFile"
    20. 20. fi
    21. 21.
    22. 22. # 其他参数还有-n,-n是判断一个变量是否是否有值
    23. 23. if [ ! -n "$myVar" ]; then
    24. 24. echo "$myVar is empty"
    25. 25. exit 0
    26. 26. fi
    27. 27.
    28. 28. # 两个变量判断是否相等
    29. 29. if [ "$var1" = "$var2" ]; then
    30. 30. echo '$var1 eq $var2'
    31. 31. else
    32. 32. echo '$var1 not eq $var2'
    33. 33. fi
    34. -f 和-e的区别
    35. Conditional Logic on Files
    36. -a file exists.
    37. -b file exists and is a block special file.
    38. -c file exists and is a character special file.
    39. -d file exists and is a directory.
    40. -e file exists (just the same as -a).
    41. -f file exists and is a regular file.
    42. -g file exists and has its setgid(2) bit set.
    43. -G file exists and has the same group ID as this process.
    44. -k file exists and has its sticky bit set.
    45. -L file exists and is a symbolic link.
    46. -n string length is not zero.
    47. -o Named option is set on.
    48. -O file exists and is owned by the user ID of this process.
    49. -p file exists and is a first in, first out (FIFO) special file or
    50. named pipe.
    51. -r file exists and is readable by the current process.
    52. -s file exists and has a size greater than zero.
    53. -S file exists and is a socket.
    54. -t file descriptor number fildes is open and associated with a
    55. terminal device.
    56. -u file exists and has its setuid(2) bit set.
    57. -w file exists and is writable by the current process.
    58. -x file exists and is executable by the current process.
    59. -z string length is zero.
    60. 是用 -s 还是用 -f 这个区别是很大的!