云服务器

Linux | shell脚本-变量

2019-12-04 18:19:14 115

一、简介

Shell是一种脚本语言,那么,就必须有解释器来执行这些脚本。Unix/Linux上常见的Shell脚本解释器有bash、sh、csh、ksh等,习惯上把它们称作一种Shell。我们常说有多少种Shell,其实说的是Shell脚本解释器。


二、基本介绍

1、学语言的经典”Hello World!

打开文本编辑器,新建一个文件test.sh,扩展名为.sh(sh代表shell)。

输入一些代码:

#!/bin/bash

echo "Hello World !"

在命令行运行:

chmod +x test.sh && ./test.sh

运行结果:


2、注释

#运行代码(是一个约定的标记,它告诉系统这个脚本需要什么解释器来执行,即使用哪一种Shell

其他#开头注释(一般有蓝色区分),会被解释器忽略。sh里没有多行注释,只能每一行加一个#号。


3、在命令行打印输出

1echoShell的一个内部指令,用于在命令行屏幕上打印出指定的字符串。

echo abc


PSecho后单引号和双引号作用是不同的。单引号不能转义里面的字符。双引号可有可无,单引号主要用在原样输出中。

例如:


2printf:格式化输出语句。

printf 命令用于格式化输出, 是echo命令的增强版。它是C语言printf()库函数的一个有限的变形,并且在语法上有些不同。

如同 echo 命令,printf 命令也可以输出简单的字符串:

printf "123\n"

printf 不像 echo 那样会自动换行,必须显式添加换行符(\n)

4、命令行从输入设备读入内容

#!/bin/bash

echo "What is your name?"

read name #输入

echo "你好, $name"

运行脚本:

chmod +x test1.sh && ./test1.sh


三、变量定义

1、定义变量  

格式:变量=值 (默认变量类型是字符类型) abc=123

PS:等号两边不能有空格,对同一变量名定义,以最后一次定义的值生效

1查看已定义的变量-set

abc=123

set | grep abc

2)变量命名规则:

  • 首个字符必须为字母(a-zA-Z

  • 区分字母大小写

  • 可以使用字母、数字和下划线组合

  • 但不能使用标点符号

2、使用变量

使用一个定义过的变量,只要在变量名前面加美元符号($)即可,如:$变量名

abc=123

echo $abc

3、删除变量-unset

变量被删除后不能再次使用;unset 命令不能删除只读变量。

unset abc


四、变量类型

1、局部变量:

(1)局部变量在脚本或命令中定义

(2)仅在当前shell实例中有效

(3)其他shell启动的程序不能访问局部变量

2系统环境变量:

(1)系统启动时加载系统配置文件或服务的配置文件

(2)在文件中定义的所用用户都可以调用

(3)变量名是固定的,值可以被修改

(4)在写脚本时,系统环境变量可以直接被使用或者重新赋值

(5)env  查看当前所有已经定义的系统环境变量

6)系统环境变量名一般是大写

3shell预定义变量(特殊变量):

在使用的shell/bin/bash)已经定义好的变量,变量名和变量值都不可以被修改,变量值根据当前的运行环境,随机获取的。

1$0   当前终端运行进程的进程名   当前执行脚本

2$n   传递给脚本或函数的参数

是一个数字,表示第几个参数。例如,第一个参数是$1,第二个参数是$2

(3)$!   当前终端后台运行最后运行进程的PID

(4)$$   当前终端运行进程的pid

(5)$#   脚本或函数位置变量的总个数

(6)$*   脚本或函数所有位置变量的值

(7)$?   上一条命名执行后的返回状态

echo $?     表示上条命令执行正确    表示上条命令执行不正确

例子:  


执行的结果如下:




 睿江云官网链接:https://www.eflycloud.com/home?from=RJ0032
上一篇: 无

微信关注

获取更多技术咨询