shell--2--shell变量 定义变量 使用变量 只读变量 删除变量 变量类型 Shell字符串 shell函数

Shell变量

@1变量即在程序运行过程中它的值是允许改变的量

@2变量是用一串固定的字符来表示不固定的值的一种方法

@3变量是一种使用方便的占位符,用于引用计算机内存地址,该地址可以存储Script运行时可更改的程序信息

@4在shell中变量是不能永久保存在系统中的,必须在文件中声明

定义变量

变量名不加$,如:

Name=”rnunoob.com”

注意,变量名和等号之间不能有空格,这可能和你熟悉的所有编程都不一样,同时,变量命名必须遵循如下规则:

@1命名只能使用英文字母,数字和下划线,首歌字符不能以数字开头

@2中间不能有空格们可以使用下划线(_)

@3不能使用标点符号

@4不能使用bash里的关键字

除了显式地直接赋值,还可以用语句给变量赋值:

for file in ‘ls  /etc’

for  file in $(ls /etc)

以上语句将/etc下目录的文件名循环列出来

使用变量

使用一个定义过的变量,只要在变量名前面加上$符号就可以了,如:

Name=“xue”

echo  $Name

echo  ${Name}

变量名外面的花括号时可选的,加不加都行,加花括号是为了帮助解释器识别变量的边界,比如下面这种情况:

For skill in Ada Coffe Action Java;do

Echo “I am good  at   $(skill) Script”

Done

只读变量

使用readonly命令可以将变量定义为只读变量,只读变量的值不能被更改

删除变量

使用unset命令可以删除变量,语法:

Unset  变量名;

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

变量类型:

运行shell时,会存在三种变量:

  1. 局部变量 局部变量在脚本或命令中定义,仅仅在当前shell实例中有效,其他shell启动的程序不能访问局部变量
  2. 环境变量所有的程序,包括shell启动的程序,都能访问环境变量,有些程序需要环境变量来保证器正常运行,必要时shell脚本也可以定义环境变量
  3. Shell变量shell变量是由shell程序设置的特殊变量,shell中由一部分是环境变量由一部分是局部变量,这些变量保证了shell的正常运行

Shell字符串

单引号 : 原样输出但单引号字符中不能出现一个单独的引号

双引号:双引号可以由变量,可以出现转义字符

拼接字符串

ideol="world"
greet="hello "$ideol""
greet_1="hello ${ideol}"
echo $greet $greet_1
greet_2='hello,'$ideol''
greet_3='hello,${ideol}'
echo  $greet_2 $greet_3

输出结果:

hello world hello world
hello,world hello,${ideol}

获取字符串长度

string="abds"
echo ${#string}

输出:4

提取字符串

echo ${string:2:4} 输出ds

查找字符串:

echo `expr index "$string" d`  输出3 d在第三,以找到的第一个为准

Shell注释

@1#单行注释

@2多行注释:

:<<EOF
注释内容
注释内容
EOF

注意:EOF可用其他字符替换

Shell脚本中的函数

脚本中的函数是把一个复杂的语句块定义成一个字符串的方法

下面这个例子中定义了一个函数:

Host_Message()
{
        read -p "[E]xit [U]ser  [H]ostname:" Action
        Action=`echo $Action|tr 'a-z' 'A-Z'`
        [ "$Action" = "E" ]&& exit
        [ "$Action" = "U" ]&& echo You are $USER
        [ "$Action" = "H" ]&& hostname
        Host_Message
}
Host_Message

输出结果:
 

[E]xit [U]ser  [H]ostname:u
You are root
[E]xit [U]ser  [H]ostname:h
localhost
[E]xit [U]ser  [H]ostname:e

猜你喜欢

转载自blog.csdn.net/weixin_40460156/article/details/82055206