Shell编程学习总结

 

目录

一、shell编程概述

1.shell名词解释

shell 

shell两大主流

2.执行shell脚本

二、shell基础

        1.shell变量

        2.shell字符串

        3.shell数组


一、shell编程概述

1.shell名词解释

  • shell 

命令解释器

Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是一种命令语言,又是一种程序设计语言。

Shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务。

  • shell两大主流

sh:

        Bourne shell (sh) ,Solaris,hpux默认shell

        Bourne again shell (bash) ,Linux默认shell

csh:

        C shell (csh)

        tc shell (tcsh)

  • #! 声明

告诉系统其后路径所指定的程序即是解释此脚本文件的shell程序

#!/bin/bash

echo "helloworld!"

2.执行shell脚本

  • 输入脚本的绝对路径或相对路径
/root/helloworld.sh
./helloworld.sh

执行的必须是一个可执行文件

  • bash或sh+脚本
sh helloworld.sh

当脚本没有x权限时,root和文件所有者通过该方式可正常执行

  • 在脚本的路径前再加“.”或source
source helloworld.sh
  •  区别

        第一种和第二种会新开一个bash,不同bash中的变量无法共享

        第三种 是在同一个shell里面执行的

  • export

        可以将当前进程的变量传递给子进程去使用

二、shell基础

1.shell变量

  • 定义变量

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

        中间不能有空格,可以使用下划线。

        不能使用标点符号,不能使用bash里的关键字(利用help命令可查看保留关键字)

  • 变量的类型
    • 局部变量
      • 局部变量在脚本或命令中定义,仅在当前shell实例中有效,其他shell启动的程序不能访问局部变量
    • 环境变量
      • 所以的程序,包括shell启动的程序,都能访问环境变量,有些程序需要环境变量来保证其正常运行。
    • shell变量
      • shell变量是由shell程序设置的特殊变量,shell变量中有一部分是环境变量, 有一部分是局部变量。
#变量的声明
name="nice"

#变量的调用
echo $name
echo ${name}

#只读变量
name="nice"
readonly name
name="good"

#删除变量

unset name

2.shell字符串

  • 字符串可以用单引号,也可用双引号,也可都不用。
  • 单引号
    • 单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的
    • 单引号字符串中不能出现单独一个单引号,但可成对出现,作为字符串拼接使用
  • 双引号
    • 双引号里面可以有变量,空格
    • 可以出现转义字符
#声明字符串
str1="hellowolrd1"
str2='helloworld2'

#字符串拼接--双引号
name='helloworld'
name1="hello,"$name"!"
name2="hello,${name}!"

#字符串拼接--单引号
name='helloworld'
name1='hello,'$name'!'
name2='hello,${name}!'

#字符串的长度
num="123456"
echo ${#num}
echo ${num:1:4}

3.shell数组

  • bash支持一维数组(不支持多维数组),并且没有限定数组的大小。
  • 数组元素的下标由0开始编号。获取数组中的元素要利用下标,下标可以是整数或算术表达式,其值应大于或等于0
  • Shell 是弱类型的,它并不要求所有数组元素的类型必须相同
  • Shell 数组的长度不是固定的,定义之后还可以增加元素
#定义数组 括号来表示数组,数组元素用空格符合分割
#数组名=(值1 值2 ... 值n)
fs=("兔" "虎" "猫" "羊")

#读取数组 ${数组名[下标]}
f=${fs[1]}

#使用@符号可以获取数组中所有元素
echo ${fs[@]}

#获取数组长度
len1=${#fs[@]}
len2=${#fs[*]}
  • 无需逐个元素地给数组赋值
ages=([3]=24 [5]=19 [10]=12)

以上代码就只给第 3、5、10 个元素赋值,所以数组长度是 3。 

你可能感兴趣的:(shell)