linux系统运维:shell编程基础(day01)

一、shell脚本的三种执行方式

1、使用解释器执行脚本中的命令

[root@test day01]# sh test.sh 
Hello Word!!
[root@test day01]# bash test.sh 
Hello Word!!

2、使用路径方式执行脚本中的命令

两种:当前路径

          绝对路径

[root@test day01]# chmod +x test.sh  #给shell添加执行权限
[root@test day01]# ./test.sh   #当前路径
Hello Word!!
[root@test day01]# /server/scripts/day01/test.sh  #绝对路径
Hello Word!!

3、使用source和.执行脚本中的命令

source区别于上面两种执行方法,source是直接在父shell中运行脚本,上面两种是在子shell中运行脚本,如果在脚本中定义变量,子shell中可以继承父shell中的变量,父shell不能使用子shell中的变量

[root@test day01]# source test.sh 
Hello Word!!
[root@test day01]# . test.sh 
Hello Word!!

其他几种执行方式 (不常用)

[root@test day01]# bash < test.sh 
Hello Word!!

二、变量

1、变量的分类

环境变量(全局变量)对于系统所有的bash生效  系统默认定义好的一般都是大写

普通变量(局部变量)自己定义的变量 一般都在脚本中定义

按照生存周期分类:

临时变量:直接在当前shell中定义的变量,重启或者重新链接都失效

永久变量:写入到 /etc/profile 文件中,source可以直接让文件生效,或者重新链接一下xshell

2、定义变量的方式

ps axuf 查看当前shell

变量名称=变量的值         只在当前的shell中生效

[root@test day01]# cat test.sh 
#!/bin/bash
name=hehe
echo $name
[root@test day01]# sh test.sh 
hehe

export 变量名称=变量的值        在所有的shell中生效

[root@test day01]# cat test.sh 
#!/bin/bash
export name=hehe
echo $name

 
[root@test day01]# sh test.sh 
hehe

三、和变量相关的配置文件

1、/etc/porfile (全局生效)

2、用户的变量文件,在文件中定义变量只对当前用户生效

      /root/bashrc   

      /root/bash_profile

      /etc/bashrc

如果同样的变量写入到上面几个文件中,则会覆盖profile中定义的变量

四、变量的定义方式

1、语法:

        变量名称=变量的值

2、变量名称的定义方式:

        字母、数字、下划线组合,以字母或者下划线开头,但是不能以数字开头,等号两端不能有空格

3、变量书写方式:

        a、全大写NAME_AGE 系统默认的都是大写的

        b、全小写 name_age

        c、大驼峰写法:Name_Age 每个单词第一个字母大写

4、变量值的定义

        a、数字的定义

                必须连续的数字

        b、字符串的定义

                必须用 ' ' 或 " " 引起来

         c、命令的定义

             1、直接定义           

[root@test day01]# test=ls
[root@test day01]# $test
test1.sh  test.sh

                2、命令执行后将结果复制给变量

[root@test day01]# test=`ls`
[root@test day01]# echo $test 
test1.sh test.sh

5、shell重要的内置变量

$0 脚本名

$n n为数字,代表用户输入的第几个参数  #注意系统会把$10认为$1,需要用中括号括起来即${10} 

$# 表示脚本传参的个数

$? 表示上一条命令的执行的结果,成功返回0,不成功则返回非0

$$ 表示脚本的pid

----------

$_ 表示获取执行脚本最后的一个值

$*  获取脚本的所有参数 在循环体中加上双引号将所有参数作为一个参数

$@ 获取脚本的所有参数 在循环体中加上双引号将所有参数作为独立的参数

 

6、变量的传参方式

a、直接传参:脚本名后直接加参数

b、赋值传参:直接在脚本中用$n接收传入的参数

c、read传参:在脚本中使用read -p

[root@test day01]# cat test.sh 
#!/bin/bash
read -p  '请输入您的名字: ' name
echo '名字='$name
[root@test day01]# sh test.sh 
请输入您的名字: aaa
名字=aaa

接收用户传的参数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值