1:Shell Script中if语句的条件部分要以分号来分隔
2:要注意条件测试部分中的空格。在方括号的两侧都有空格
3:echo "Hi, ${a}s" 单引号中的变量不会进行变量替换操作。
4:[ -f "$file" ] 判断$file是否是一个文件
5:[ $a -lt 3 ] 判断$a的值是否小于3,同样-gt和-le分别表示大于或小于等于
6:[ -x "$file" ] 判断$file是否存在且有可执行权限,同样-r测试文件可读性
7:[ -n "$a" ] 判断变量$a是否有值,测试空串用-z
8:[ "$a" = "$b" ] 判断$a和$b的取值是否相等
9:[ cond1 -a cond2 ] 判断cond1和cond2是否同时成立,-o表示cond1和cond2有一成立
说明:$#表示包括$0在内的命令行参数的个数。在Shell中,脚本名称本身是$0,剩下的依次是$0、$1、$2…、${10}、${11},等等。$*表示整个参数列表,不包括$0,也就是说不包括文件名的参数列表。
注意:一定要切记filelist=后边的那个引号不是单引号,而是tab键上边的那个键,或者说是1左边的那个键
filelist=`ls /home/work`
for file in $filelist
do
echo $file
done
实例:shell遍历目录下所有文件 displayfile.sh
#!/bin/sh
cd $1
echo "The Catelog:$1"
files=`ls -a`
m=0
n=0
for f in $files
do
if [ -d "$f" ]; then
m=`expr $m + 1`
else
n=`expr $n + 1`
echo "$f"
fi
done
echo -e "The Catelog Number is $m"
echo -e "The File Number is $n"
运行:./displayfile.sh /home/work
cd $1
echo "The Catelog:$1"
files=`ls -a`
m=0
n=0
for f in $files
do
if [ -d "$f" ]; then
m=`expr $m + 1`
else
n=`expr $n + 1`
echo "$f"
fi
done
echo -e "The Catelog Number is $m"
echo -e "The File Number is $n"
运行:./displayfile.sh /home/work
实例:Linux shell脚本判断当前是否为root用户
whoami(显示当前用户的用户名)
if [ `whoami` = "root" ];then
echo "root用户!"
else
echo "非root用户!"
fi
id -u (显示当前用户的uid)
if [ `id -u` -eq 0 ];then
echo "root用户!"
else
echo "非root用户!"
fi