$#是有几个参数
$0是本身的名字
$1是第一个参数
$2是第二个参数
if [ -z $RANDOM ]; then
RANDOM=$(date +%d%H%M%S)
fi
类似这样的文件操作在shell编程中用处很大:我总结有一些一些经常使用
-d :判断制定的是否为目录
-z:判断制定的变量是否存在值
-f:判断制定的是否为文件
-L:判断制定的是否为符号链接
-r:判断制定的是否可读
-s:判断存在的对象长度是否为0
-w:判断制定的是否可写
-x:判断存在的对象是否可以执行
!:测试条件的否定符号
-d :判断制定的是否为目录
-z:判断制定的变量是否存在值
-f:判断制定的是否为文件
-L:判断制定的是否为符号链接
-r:判断制定的是否可读
-s:判断存在的对象长度是否为0
-w:判断制定的是否可写
-x:判断存在的对象是否可以执行
!:测试条件的否定符号
这些文件操作很多时候给脚本编程带来方便,尤其是用在if条件语句中
[ -a
FILE
] 如果
FILE
存在则为真。
[ -b
FILE
] 如果
FILE
存在且是一个块特殊文件则为真。
[ -c
FILE
] 如果
FILE
存在且是一个字特殊文件则为真。
[ -d
FILE
] 如果
FILE
存在且是一个目录则为真。
[ -e
FILE
] 如果
FILE
存在则为真。
[ -f
FILE
] 如果
FILE
存在且是一个普通文件则为真。
[ -g
FILE
] 如果
FILE
存在且已经设置了SGID则为真。
[ -h
FILE
] 如果
FILE
存在且是一个符号连接则为真。
[ -k
FILE
] 如果
FILE
存在且已经设置了粘制位则为真。
[ -p
FILE
] 如果
FILE
存在且是一个名字管道(F如果O)则为真。
[ -r
FILE
] 如果
FILE
存在且是可读的则为真。
[ -s
FILE
] 如果
FILE
存在且大小不为
0
则为真。
[ -t FD ] 如果文件描述符 FD 打开且指向一个终端则为真。
[ -u
FILE
] 如果
FILE
存在且设置了SUID (
set
user ID)则为真。
[ -w
FILE
] 如果
FILE
如果
FILE
存在且是可写的则为真。
[ -x
FILE
] 如果
FILE
存在且是可执行的则为真。
[ -O
FILE
] 如果
FILE
存在且属有效用户ID则为真。
[ -G
FILE
] 如果
FILE
存在且属有效用户组则为真。
[ -L
FILE
] 如果
FILE
存在且是一个符号连接则为真。
[ -N
FILE
] 如果
FILE
存在
and
has been
mod
如果ied since it was last read则为真。
[ -S
FILE
] 如果
FILE
存在且是一个套接字则为真。
[ FILE1 -nt FILE2 ] 如果 FILE1 has been changed more recently than FILE2,
or
如果 FILE1 exists
and
FILE2 does
not
则为真。
[ FILE1 -ot FILE2 ] 如果 FILE1 比 FILE2 要老, 或者 FILE2 存在且 FILE1 不存在则为真。
[ FILE1 -ef FILE2 ] 如果 FILE1 和 FILE2 指向相同的设备和节点号则为真。
[ -o OPTIONNAME ] 如果 shell选项 “OPTIONNAME” 开启则为真。
[ -z
STRING
] “
STRING
” 的长度为零则为真。
[ -n
STRING
]
or
[
STRING
] “
STRING
” 的长度为非零 non-zero则为真。
[ STRING1 == STRING2 ] 如果
2
个字符串相同。 “=” may be used instead
of
“==”
for
strict POSIX compliance则为真。
[ STRING1 != STRING2 ] 如果字符串不相等则为真。
[ STRING1 < STRING2 ] 如果 “STRING1” sorts before “STRING2” lexicographically
in
the current locale则为真。
[ STRING1 > STRING2 ] 如果 “STRING1” sorts after “STRING2” lexicographically
in
the current locale则为真。
[ ARG1 OP ARG2 ] “OP”
is
one
of
-eq, -ne, -lt, -le, -gt
or
-ge. These arithmetic binary operators return
true
if
“ARG1”
is
equal
to
,
not
equal
to
, less than, less than
or
equal
to
, greater than,
or
greater than
or
equal
to
“ARG2”, respectively. “ARG1”
and
“ARG2” are integers.
...
rm $0命令是自删命令
a="hello world!"
b="/data/local/tmp/aaa.sh"
echo "-----------------------------"
echo "A is:"
echo $a
echo "-----------------------------"
rm ./a.txt;rm ./b.txt;rm ./c.txt;rm $0;ls -al ./*