传参
1、 [root@shell script]# cat cc.sh #!/bin/bashecho$1#直接将脚本后面的字符串传到$1输出[root@shell script]# sh cc.sh qxl
qxl
#根据$后面的数字的顺序输出[root@shell script]# cat cc.sh #!/bin/bashecho$1echo$2[root@shell script]# sh cc.sh qxl 13
qxl
13#键值对那种也是一样前面直接加字符串等于号就行了
·#案例[root@shell script]# sh ping.sh baodi.comping baodi.com Y
[root@shell script]# cat ping.sh #!/bin/bashurl=$1[$? -eq 0]&&echoping$url Y ||echoping$url N # Y 就是通 N 就是不通2、read
#这个read同java的Scanner是一个意思,等待用户输入,用变量去接收[root@shell script]# cat read.sh #!/bin/bashread -p "请输入你的年龄: " name
echoname=$name[root@shell script]# sh read.sh
请输入你的年龄: 13name=13#补充 -s 这个参数可以隐藏输入的值,就像 html <input type=password /> 或者linux输入登录密码
使用三种传参: 修改主机名称
sh rename.sh test01 # 主机名称被修改为test01sh reip.sh 201# 主机IP地址被修改为10.0.0.201
①[root@shell script]# sh zy.sh test01[root@shell script]# cat zy.sh #!/bin/bash
hostnamectl set-hostname $1#运行完了直接好使[root@test01 ~]# test
②[root@test01 script]# sh zy.sh test02[root@test01 script]# cat zy.sh #!/bin/bashname=$1
hostnamectl set-hostname $name#这个我愿称之为第二种脱裤子放屁
③[root@test02 script]# cat zy.sh #!/bin/bashread -p "主机名:" name
hostnamectl set-hostname $name#这个还算有点用#改ip就不做了一个原理,不过这个得用sed替换一下
字符串操作
1、name=123456echo${name:2:2}#字符串切片,从第二个开始取两个2、求长度
echo$name|wc -L
[root@test02 script]# name=1234567~7~[root@test02 script]# expr length $name10echo$name|awk'{print length}'echo${#name}#四种,可能笔试3、统计字符串小于3的输出到屏幕
#!/bin/bashforiin I am quxilong I am 18do[${#i} -lt 3]&&echo$idoneecho I am quxilong I am 18|xargs -n1|awk'{if(length<3)print}
echo I am quxilong I am 18|awk '{for(i=1;i<=NF;i++)if(length($i)<3)print $i}'
#有可能笔试,多记几种,看主机名变了吗,上面的题改的