脚本shell-wangxiang
一:基础介绍1优先级
别名-->内部命令-->外部命令
2. 脚本调试
sh-xfoo.sh
sh-efoo.sh
3三种定界符
"字符串。。。。$变量名" #双引号用于界定不连续的字符,支持变量
'字符串。。。。$ # ?' #单引号无法引用变量
`command` 或者$(command)【命令替换】#反撇号用于执行命令,等同于$()
二:运算
1 Shell整数运算
方法1:
expr表达式
方法2:
echo$[表达式]
echo$((表达式))
自增运算
letA++或者((A++))
let表达式 或者 ((表达式))
2小数用管道交给 bc
echo"表达式"|bc
三:变量
1 变量基本操作 ——
变量名=值
echo$变量名
2 变量的几种类型 ——
自定义变量
环境变量:变量名一般全大写字母、用户登录后自动设好
位置变量:$1、$2、$3。。。。${10}。。。
预定义变量:
$0表示Shell本身的文件名,$#表示变量的个数,$*将所有位置变量作为一个整体,$@
将所有位置变量作为一个字符串,$! 表示最后运行的后台Process的PID,$? 表示返回值
3 read -p "请输入你的名字:" name#输入的数值将赋值给变量name
四: 条件判断与循环
1 文件和目录的状态测试
-e filename如果 filename存在,则为真[ -e /var/log/syslog ]
-d filename如果 filename为目录,则为真[ -d /tmp/mydir ]
-f filename如果 filename为常规文件,则为真[ -f /usr/bin/grep ]
-r filename如果 filename可读,则为真[ -r /var/log/syslog ]
-w filename如果 filename可写,则为真[ -w /var/mytmp.txt ]
-x filename如果 filename可执行,则为真[ -x /usr/bin/grep ]
-s filename如果文件有数据,则为真[ -s /etc、passwd ]
#方括号和数据之间必须有空格,前面加!表示取反[ ! -x /usr/bin/grep ]
2 整数值比较:
num1-eq num2等于[ 3 -eq $mynum ]
num1-ne num2不等于[ 3 -ne $mynum ]
num1-lt num2小于[ 3 -lt $mynum ]
num1-le num2小于或等于[ 3 -le $mynum ]
num1-gt num2大于[ 3 -gt $mynum ]
num1-ge num2大于或等于[ 3 -ge $mynum ]
3 字符串比较:
-z string如果 string长度为零,则为真[ -z "$myvar" ]
-n string如果 string长度非零,则为真[ -n "$myvar" ]
string1== string2如果 string1与 string2相同,则为真[ "$myvar" == "one two three" ]
string1!= string2如果 string1与 string2不同,则为真[ "$myvar" != "one two three" ]
&&|| ;
4 函数及中断控制
break放弃当前的整个循环语句,---》跳到done之后
continue放弃当前这一次循环语句,---》返回while [ 测试条件 ]
exit退出当前的整个脚本
shift处理位置变量
5if选择结构 ——
单分支:
if[ 条件测试 ];
then
命令序列....
fi
双分支:
if[ 条件测试 ]
then
命令序列1....
else
命令序列2....
fi
多分支:
if[ 条件测试1 ]
then
命令序列1....
elif[ 条件测试2 ]
then
命令序列2....
else
命令序列3....
fi
6for循环结构 ——
for变量名in 值1 值2值3 ....
do
命令序列....
done
4 while循环结构 ——
while[ 条件测试 ]
do
命令序列....
Done
7 当条件成立的时候结束循环
until[ .. .. ]
do
cmd1 .. ..
done
8 类C语言风格的for循环
for((i=1;i
页:
[1]