生成随机数
[root@yunweb jiaoben]# openssl rand -hex 1
27
[root@yunweb jiaoben]# openssl rand -hex 3
cc8dcb
[root@yunweb jiaoben]# openssl rand -hex 2
d4ad
[root@yunweb jiaoben]# openssl rand -hex 3 | sed -r "s/(..)(..)(..)/\1:\2:\3/g"
16:d9:48
read -p “请你输入用户名称:” username 读用户的标准输入
!/bin/bash
bash脚本调试
•sh –x script这将执行该脚本并显示所有变量的值
•sh –n script不执行脚本只是检查语法模式,将返回所有错误语法
•sh –v script执行脚本前把脚本内容显示在屏幕上
\n:换行 \t : tab键 制表符 \r:回车
变量
定义:变量名称=值; =是赋值符号,前后不能有空白 a="hell" $a
永久生效:写到四个登录脚本,/etc/profile ~/.baserc ~/.bash_profile /etc/bashrc source~/.bashrc
在/etc/profile.d建立独立的环境变量配置文件
$$ 当前进程PID
$? 命令执行后的返回状态.0 为执行正确,非 0 为执行错误
$# 位置参数的数量
$* 所有位置参数的内容
$@ 所有的参数
$! 上一个后台进程的PID (wait命令中使用)
$(()) 运算加减乘除 let i++ 应用于累加 +、-、*、/、()、%取余(取模)
bash本身不能做小数计算:需要bc命令转换 #echo "2'*'4" | bc
echo"Press y to continue"
read yn
if[ "$yn" = "y" ]; then
echo "script is running..."
else
echo "STOP!"
fi
case $i in
1)
echo
;;
2)
echo
;;
3|4)
echo
;;
n)
echo
;;
*) 输入错误;;
esac
cat <<-EOF
...
EOF
#seq 10 打印1..10
#seq 5 10
#seq 1 2 10 只打印奇数 2是步长0
[ 1 -gt 10 ] 大于 [ 1 -lt 10 ] 小于 [ 1 -eq 10 ] 等于
[ 1 -ne 10 ] 不等于 [ 1 -ge 10 ] 大于等于 [ 1 -le 10 ] 小于等于
while 循环:
#!/bin/bash
#14.sh
x=0
while [ $x -le 10 ] while:死循环
do
echo $x
x=`expr $x + 1`let x++
done
while read IP
do
done < /etc/passwd
sleep 10 & 后台运行 wait 作业号或进程号 $! 上一个进程执行的pid
continue:跳出当前这一次循环
用Massachusetts替换MA:
#sed ‘s/MA/Massachusetts/’ file1.txt
改变分隔字符:
#awk -F , '/MA/{ print $1 }' file1.txt
awk -F : 'NR==2 {print $7}' 第二行第7列
1,3范围 从第一行到第三行
#sed -n '1,3p' passwd 打印1到3行
删除第五行到结尾所有的行 5,$d
混合使用行地址和模式地址 #sed ‘1,/^$/d' file.txt
删除除了那些行以外的行 1,5!d
c 替换 sed '/zhong/c abc' 将zhong这一行替换成abc
返回值 return value value不能超过255
默认,函数里的变量会在函数外面生效 local 变量名称 //变量只在函数内生效
myfunc() //函数定义
{
echo “This is my first shell function”
}
myfunc //函数调用
unset myfunc//取消函数
网友评论