Shell
来源:互联网 发布:lol网络不稳断开连接 编辑:程序博客网 时间:2024/06/08 20:14
#######################
强引用、弱引用
'' ""
[root@localhost Desktop]# echo "I have a $fruit"I have a [root@localhost Desktop]# echo 'I have a $fruit'I have a $fruit[root@localhost Desktop]# echo Make \$\$ Fast\!Make $$ Fast![root@localhost Desktop]# echo Make $$ Fast!Make 4119 Fast![root@localhost Desktop]# echo #I have a banana#[root@localhost Desktop]# echo \#I have a banana#I have a banana[root@localhost Desktop]# echo '#I have a banana'#I have a banana[root@localhost Desktop]# echo `pwd`/root/Desktop[root@localhost Desktop]# echo ' "Goodafternoon" ' "Goodafternoon"
变量:
[root@localhost Desktop]# i=9[root@localhost Desktop]# j=0[root@localhost Desktop]# echo $i $j9 0父shell,子shell[root@localhost Desktop]# bash[root@localhost Desktop]# bash[root@localhost Desktop]# bash[root@localhost Desktop]# bash[root@localhost Desktop]# exitexit[root@localhost Desktop]# exitexit[root@localhost Desktop]# exitexit[root@localhost Desktop]# exitexit[root@localhost Desktop]# exitexit
#######################
算术运算符<value>++ 赋值后增1 <value>-- 赋值后减1 - 减法 + 加法 ** 幂运算 * 乘法 / 除法 % 余数 += 加等 -= 减等计算命令:$[],expr,let,(())
#######################
循环:
for do done
while do done
例子:1+2+...+100,数据库备份
vim 100.sh
#!/bin/bash for i in {1..100} do ((j+=i)); echo $j done
chmod +x 100.sh
./100.sh
显示结果:
1
3
6
10
...
5050
vim mysql.sh
#!/bin/bash for name in ` mysql -uroot -predhat -e "show databases;" -NE | grep - E "^\*|^u|schema$" -v ` do mysqldump -uroot -predhat $name > /mnt/${name}.dump echo "$name is ok." done
#######################
test条件判断:
语法:test EXPRESSION 或[EXPRESSION]
[root@localhost Desktop]#[ -n westos ];echo $?0[root@localhost Desktop]#[ -z westos ];echo $?1字符串比较运算符:==、!=[root@localhost Desktop]#[ abc=ABC ];echo $?0[root@localhost Desktop]#[ abc=ABC ];echo $? 1[root@localhost Desktop]#[ abc!=ABC ];echo $?0
数字比较运算符:
-eq 判断是否相等,相等返回0;
-ne 判断是否不等,别等返回0;
-lt 判断是否小于,小于返回0 ;
-le 判断是否小于等于,若小于等于为0;
-gt 判断是否大于,大于返回0;
-ge 判断是否大于等于,若大于等于返回0。
[root@localhost Desktop]#[ 1 -eq 1 ];echo $?0[root@localhost Desktop]#[ 1 -ne 1 ];echo $?1[root@localhost Desktop]#[ 1 -gt 2 ];echo $?1
文件状态运算符:
语法: test -{-b|-c|-e|-f|-d|-L} filename|direcrtory
-b:判断是否为块设备
-c:判断是否为字符文件
-e:判断文件是否存在
-f:判断是否为普通文件
-d:判断是否是目录
-L:判断是否为链接文件(软连接)
二进制文件运算符:-ef -nf -ot
逻辑运算符:-o -a ! && ||
{ if;then fi }
{if ;then else fi}
{if ;then else if; then else if; then ... else fi}
case "$1" in
);;
);;
);;
esac
简易一天倒计时:
#!/bin/bashfor ((hour=23;hour>=0;hour--))dofor ((min=59;min>0;min--))dofor (( sec=59;sec>=0;sec--))doecho -ne "After ${hour}:${min}:${sec} is end."echo -ne "\r\r"sleep 1donedonedone
#!/bin/bashfor num in {1..30}doping -c1 -w1 192.168.122.$num &>/dev/nullwhile [ "$?" -eq "0" ]doecho 192.168.122.$num is upbreak donewhile [ "$?" -ne "0" ]doecho 192.168.122.$num is downdonedone
#######################
例子:
要求:一个文件包含用户名,一个文件包含密码,若是密码行数少于用户名,则用户对应不设置密码,不更改已存在用户密码,根据不同的情况进行判别。
#!/bin/bashif [ -n "$1" -a -n "$2" ]thenif [ -e "$1" -a -e "$2" ]thenlines=` wc -l $1 |cut -d " " -f 1 `echo $linesfor num in $( seq 1 $lines )dousername=`sed -n ${num}p $1`password=`sed -n ${num}p $2`ckuser=`getent passwd $username`[ -z "$ckuser" ]&&( useradd $username echo $password |passwd --stdin $username )||(echo $username exist!)done elif [ ! -e "$1" ]then echo "The usrnamefile is not exit."else echo "The passwordfile is not exit."fielseecho "Need two files to create users(username and password)."fi
- shell
- shell
- shell
- shell
- shell
- Shell
- shell
- Shell
- shell
- shell
- SHELL
- Shell
- shell
- shell
- shell
- shell
- shell
- shell
- 保持设备唤醒
- 贝塞尔曲线绘制原理& unity 3d实现绘制贝塞尔曲线
- Java多线程——线程同步与锁
- Spring MVC 学习笔记(二):@RequestMapping用法详解
- Bag of Words(BOW)模型
- Shell
- 用flask开发个人博客(23)—— flask中的数据模型关系
- Android开发之Service与IntentService的区别与使用场景
- 计算机系统组成与基本工作原理
- 第16周项目2 -大数据集上排序算法性能的体验
- Qt 窗口属性简介之Qt::WA_DeleteOnClose
- 阿里云服务器被黑
- 快速排序法
- 【leetcode】46. Permutations 【回溯问题的通用方法】【java】