test 文件运算符:
-b file 如果文件为一个块特殊文件,则为真
-c file 如果文件为一个字符特殊文件,则为真
-d file 如果文件为一个目录,则为真
-e file 如果文件存在,则为真
-f file 如果文件为一个普通文件,则为真
-g file 如果设置了文件的 SGID 位,则为真
-G file 如果文件存在且归该组所有,则为真
-k file 如果设置了文件的粘着位,则为真
-O file 如果文件存在并且归该用户所有,则为真
-p file 如果文件为一个命名管道,则为真
-r file 如果文件可读,则为真
-s file 如果文件的长度不为零,则为真
-S file 如果文件为一个套接字特殊文件,则为真
-t fd 如果 fd 是一个与终端相连的打开的文件描述符(fd 默认为 1),则为真
-u file 如果设置了文件的 SUID 位,则为真
-w file 如果文件可写,则为真
-x file 如果文件可执行,则为真
if-then结构化命令 实例:
file=test1
touch file
if [ -s file ]
then
echo " The file file exits and has data in it"
else
echo " The file file exits ,but has not data in it"
fi
date > file
if [ -s file ]
then
echo "the file file has data in it"
else
echo "the file file is also empty ,no data hummm"
fi
if [ 1.c -nt one2.c ]
then
echo "1.c is newer than one2.c"
else
echo "1.c is not newer than one2.c"
fi
for命令:
for var in list
do
commands
done
实例:
list="one one2 one4 one5"
list=$list" one6"//在已经存在的变量中添加新的数据
for state in $list
do
echo "state is $state"
done
结果:
./fortest
state is one
state is one2
state is one4
state is one5
state is one6
读取命令中的值:
file="states"
for state in 'cat $file'
do
echo "visit word $state"
done
~
while命令
格式:
while the command
do
other commands
done
实例:
var1=10 #赋值是不能有空格的 有空格就会出现问题 例如: /last: 第 3 行: [: -gt: 期待一元表达式等
echo "var1 is $var1"
while [ $var1 -gt 0 ]
do
echo "the var1 is $var1"
var1=$[$var1 -1 ]
done
结果:
the var1 is 10
the var1 is 9
the var1 is 8
the var1 is 7
the var1 is 6
the var1 is 5
the var1 is 4
the var1 is 3
the var1 is 2
the var1 is 1