2011年7月21日 星期四

test condition : file, directory

用在 if, while 等 流程控制 的判斷,像
if [ -f /etc/passwd ]; then
echo "found"
else
echo "not found"
fi

其中的 -f 就代表 is a file.

https://sites.google.com/site/tiger2000/home 有列出所有的 file test 選項:
[ -e file ] file exists
[ -f file ] file is a file
[ -d file ] file is a directory
[ -c file ] file is a character device
[ -b file ] file is a block device
[ -p file ] file is a named pipe
[ -s file ] file is not empty
[ -k file ] file's sticky bit is set
[ -S file ] file is a socket
[ -L file ] file is a symbolic link
[ -r file ] file is readable by user
[ -w file ] file is writeable by user
[ -x file ] file is executeable by user
[ -O file ] file is owner by user
[ -G file ] file is group owned by a greoup
[ -u file ] file has its set user ID bit set
[ -g file ] file has its group user ID bit set
[ file1 -nt file2 ] file1 is newer than file2
[ file1 -ot file2 ] file1 is older than file2
[ file -ef file2 ] file1 is another name for file2

[ $str1 = $str2 ] str1 string is the same as string str2

另外一個,是 and , or 的 邏輯運算:

-a and
-o or
! not

* 奇怪的是 這些 邏輯運算後面的 operand 好像要加"" 括號