Shell脚本入门01

2019-08-01 分类:Shell 阅读(44) 评论(1)
1.Shell脚本三种执行方式
1.bash执行
bash test.sh
2.全路径执行
/server/scripts/test.sh
3. . 或者source执行
. test.sh
source test.sh
他们的区别在与第一种和第二种都是在Shel中执行 第三种是在父进程下执行


2.环境变量
什么是环境变量?
右边一堆内容 用一个名字来代替称为环境变量
例如:name="I am lisong"
如何查看环境变量
使用:echo $name
如何查看系统定义好的环境变量
使用:env 或者 set
如何取消环境变量
使用:unset name
环境变量(全局变量)  普通变量(局部变量)
按照生存周期划分 有永久性和临时性
永久性  修改配置文件  /etc/profile
临时性  使用exprot 加变量名称  声明即可
不加exprot 只对当前shell生效
加上exprot 对当前登录窗口的所有Shell生效

环境变量的相关文件
/etc/profile 开机或者从新连接的窗口都会从新执行一次
.bashrc
.bash_profile
/etc/bashrc
如何定义环境变量
变量名=变量值
环境变量名称的定义  字母  下划线  数字的组合
尽量以字母开头(禁止使用数字开头) 等号两端不允许有空格  需见名知其意

书写方式
LISONG_AGE=18  系统中变量的定义格式
lisong_age=18  全小写语法
lisong_Age=18  小驼峰语法
Lisong_Age=18 大驼峰语法

变量值的定义方式
数字的定义
lisong_age=18  必须是连续的数字
字符串的定义
name="lisong"  使用双引号 不知道加什么符号 就加双引号 解释变量
name='lisong'   使用单引号  所见即所得  吃什么吐什么
命令的定义
time=`date`  反引号  里面必须跟可执行命令
time=$(date)  $()  可执行命令

重要的特殊位置变量
$0   脚本的名称 如果全路径执行脚本 则会脚本名称也会带全路径
获取脚本的名称  重要
basename  加上全路径也不会显示全路径只会显示脚本名称  不常用
例如:给用户提示如何使用此脚本
$n   脚本的第n个参数 $0 呗被脚本占用 从$1开始 $9往后需要加 {} 括号
$#   代表了脚本的传参的总个数 重要
例如:[ $# -ne 2 ] && echo "你请输入两个参数" && exit
$*   脚本的所有的传参的参数 如果不加双引号则和$@相同  加上双引号则把所有参数视为一个整体
$@  脚本的所有的传参的参数 如果不加双引号则和$*相同加上双引号则把所有参数视为独立的参数
$* 和$@ 正常情况下一样 循环体内不同
$?   获取上一条命令的结果 0为成功 非零为失败  重要
$$   获取脚本的PID
例如:服务器运行大量的名称相同的脚本
echo $$ > /tmp/count.pid
$!   上一个在后台运行脚本的PID  调试使用
$_   获取脚本的最后一个参数  相当于ESC .


3.传参的三种方式
直接传参
赋值传参
read传参
第一种传参方式
echo $1 $2
第二种传参方式
name=$1
age=$2
第三种传参方式
read -p "请输入名字和年龄请注意空格分开" name age
echo $name $age
例如:使用read编写一个ping工具
#!/sbin/bash
read -p "请输入一个网址:" url
ping -c 1 -W 1 $url >/dev/null 2>&1
[ $? -eq 0 ] && echo "ping $url is ok" || echo "ping $url is error"


4.变量的字符串知识
统计变量的长度  重点
name="I am lisong"
echo $name | wc -L
echo ${#name}

变量的切片
[root@web02 scripts]# echo ${name:0:1}
I
[root@web02 scripts]# echo ${name:2:2}
am
[root@web02 scripts]# echo ${name:1}
am lisong
[root@web02 scripts]# echo ${name:2:5}
am li

取字符串的长度
I am lisong teacher I am 18
方法一
echo I am lisong teacher I am 18 | wc -L
方法二
name="I am lisong teacher I am 18"
echo $(#name)
方法三
expr length "$name"
方法四
echo $name|awk '{print length}'
取字符串长度小于3的
方法一 写脚本方式 使用for循环
#!/bin/sh
for i in I am lizhenya teacher I am 18
do
[ ${#i} -lt 3 ] && echo $i
done
方法二
echo I am lizhenya teacher I am 18|xargs -n1|awk '{if(length<3)print}'
方法三
echo I am lizhenya teacher I am 18|awk '{for(i=1;i<=NF;i++)if(length($i)<3)print $i}'

5.变量的删除和替换
从前往后删除变量的内容
[root@web02 scripts]# url=www.sina.com.cn
[root@web02 scripts]# echo ${url#*.}
sina.com.cn
[root@web02 scripts]# echo ${url#*.*.}
com.cn
[root@web02 scripts]# echo ${url##*.}
cn
从后往前删除变量的内容
[root@web02 scripts]# url=www.sina.com.cn
[root@web02 scripts]# echo ${url%.*}
www.sina.com
[root@web02 scripts]# echo ${url%.*.*}
www.sina
[root@web02 scripts]# echo ${url%%.*}
www
变量的替换
[root@web02 scripts]# url=www.sina.com.cn
[root@web02 scripts]# echo ${url/w/a}
aww.sina.com.cn
[root@web02 scripts]# echo ${url/w/aa}
aaww.sina.com.cn
[root@web02 scripts]# echo ${url/sina/baidu}
www.baidu.com.cn
[root@web02 scripts]# echo ${url//w/a}
aaa.sina.com.cn

您可能也喜欢:

Shell脚本入门03

1.条形表达式 []=========test     []常用 [ -f file ]  文件是否存在 且为普通文件  重点 [ -e file ] 文件存在则为真 [ -d file ] 目录存在则为真 [ -x file ] 文件有执行权限则为真 [ -w file ] 文件可写则...

more

Shell脚本入门02

1.数值的运算 expr   整数运算 可运算加减乘除 不支持小数 也可以所见即所得 例如: [root@web02 ~]# expr lisong lisong 运算两边加空格 乘法需转义 例如: [root@web02 ~]# expr 1 + 1 2 [root@web02 ~]# ...

more

Shell脚本简介

1.学习Shell脚本需要用到什么知识?远程连接工具  如:Xshell  CRTLinux常用命令  需熟练掌握三剑客命令  需熟练掌握vim编辑器  需熟练掌握 2.如何学好Shell编程环境变量  条形表达式  if...

more

评论&留言
欢迎新朋友你的到来!
已经有1 条评论抢在你前面了~
昵称
邮箱
网站
  1. 头像
    熙熙

    Shell从入门到放弃

    #1
    回复

登录

忘记密码 ?

您也可以使用第三方帐号快捷登录

切换登录

注册