shell教程
shell 变量:name=”hauzai007”echo $name
注意事项:变量名和等号之间不能有空格不能使用标点符号不能使用bash里的关键字
只读变量:name=”huazai007”关键字:readonly name
删除变量:unset name变量类型:
1 局部变量:局部变量在脚本或命令中定义,仅在当前shell实例中有效,其他shell启动的程序不能访问局部变量
2 环境变量:所有的程序,包括shell启动的程序,都能访问环境变量,有些程序需要环境变量来保证其正常运行。必要的时候shell脚本也可以定义环境变量。
系统环境变量:查看所有环境变量:env删除环境变量:unset HAHA举个例子:PPID:是当前进程的父进程的PIDPWD:当前工作目录。RANDO:随机数变量。每次引用这个变量会得到一个0~32767的随机数。查看所有环境变量:env删除环境变量:unset 用vim在/etc/profile文件中添加我们想要的环境变量设置新的环境变量 export 新环境变量名=内容
例:export MYNAME=”LLZZ”生效:source /etc/profileshell
字符串单引号和双引号的区别:
单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的;双引号的优点:· 双引号里可以有变量·
双引号里可以出现转义字符获取字符串的长度:str=”abcd”echo ${#str}提取字符串:str=”abcd”#表示从字符串第二个字符开始截取 ,取 4个字符echo ${str:1:4}shell 数组定义数组arr=(aa bb cc)读取数组echo ${arr[0]}获取数组的长度echo ${arr[@]}echo ${arr[]}shell
多行注释::<<EOF
xxxx xxxxx
EOF
shell基本运算符算数运算符+ 加法- 减法 乘法/ 除法% 取余= 赋值== 比较(相等)!= 不相等关系运算符关系运算符只支持数字,不支持字符串,除非字符串的值是数字-eq 是否相等-ne 是否不相等-gt 表示大于-lt 表示小于-ge 大于等于-le 小于等于布尔运算符! -o 或运算 两个表达式只要有一个是true 就返回true[ $a -lt 20 -o $b -gt 100 ] 返回 true -a 与运算 两个表达式都为true才返回true [ $a -lt 20 -a $b -gt 100 ] 返回 false
逻辑运算符** && 等同于 –a|| 等同于-o
if[[ $a –lt $b && $b –gt 100 ]]; then
echo “”
else
echo “”
fi
字符串运算符 =: 检测两个字符是否相等
!=: 检测两个字符不相等
-z : 是否为空
-n :字符串的长度是否为0
文件测试运算符
-b 检测文件是否为块设备
-d 是否为目录
-f 是否为普通文件
-r 是否可读
-w 是否可写
-x 是否可执行shell
echo 命令
name=”huazai007”
echo –e “$name \n”-e 开启转义\n 换行
printf %s 将参数按字面意思解释为字符串
printf “%-10s\n” huazai007-10s 指一个宽度为10个字符(-表示左对齐,没有则表示右对齐),任何字符都会被显示在10个字符宽的字符内,如果不足则自动以空格填充,超过也会将内容全部显示出来。
%f 将参数按浮点数打印%-4.2 小数点后面保留两位小数
shell流程控制 #!/bin/bash
a=30
b=50
if [ $a == $b ]; then
echo “a等于b”
elif [ $a -gt $b ]; then
echo “a大于b”
elif [ $a -lt $b ]; then
echo “a小于b”
else
echo “没有符合的条件”
fi
#!/bin/bash
:<<EOF
for i in {1..100}do
echo $i
done
EOF
for i in `seq 1 100`
do
echo $i
done
===========while=======
#!/bin/bash
int=0
while (($int<=5))
do
echo $int
#let "int++"
let int=int+1
done
[root@master ~]# cat while_true.sh
#!/bin/bash:
<<EOF
while :
do
echo “xx”
done
EOF
while true
do
echo “oo”
done
[root@master ~]# cat until.sh
#!/bin/bash
a=0
until [ $a -gt 10 ]
do
echo $a
a=expr $a + 1
done
[root@master ~]# cat case.sh
#!/bin/bash
echo “输入一个1到4之间的数字”
echo “你输入的数字为:”
read num
case $num in
1)
echo “1”
;;
2)
echo “2”
;;
3)
echo “3”
;;
*)
echo “你输入的数字有误!请重新输入”
;;
esac