Linux中的shell到底是什么?
Shell的含义:
首先shell的英文含义是壳
它是相对于内核来说的,因为它是建立在内核的基础上,,面向于用户的一种表现形式,比如我们看到一个球,见到的是它的壳,而非核。
Linux中的shell,是指一个面向用户的命令接口,表现形式就是一个可以由用户录入的界面,这个界面也可以反馈运行信息。
Shell在linux中的存在形式
由于linux不同于windows,linux是内核与界面分离的,他可以脱离图形界面而单独运行,同样也可以在内核的基础上运行图形化的桌面。
这样,在linux系统中,就出现了两种shell表现形式。一种是在无图形化界面下的终端运行环境下的shell,另一种是桌面上运行的类似Windows 的MS-DOS运行窗口,前者我们一般习惯性地简称为终端,后者一般直接称为shell
Shell如何执行用户的命令
Shell有两种执行命令的方式,第一种方法是用户事先编写一个sh脚本,内含shell脚本,然后使用shell程序执行该脚本,这种方式我们习惯称为shell编程。
第二种形式,则是用户直接在shell页面上执行shell命令,由于shell界面的关系,大家都习惯一行行的书写。很少写出成套的程序来一起执行,。所以也称命令行。
运行shell的两种方式 脚本文件为 test.sh
第一种:chmod +x ./test.sh
第二种:/bin/sh test.sh
输入语句:echo 变量名/常量
变量名和等号之间不能有空格,这可能和你熟悉的所有编程语言都不一样。同时,变量名的命名须遵循如下规则:
- 命名只能使用英文字母,数字和下划线,首个字符不能以数字开头。
- 中间不能有空格,可以使用下划线(_)。
- 不能使用标点符号。
- 不能使用bash里的关键字(可用help命令查看保留关键字)。
Readonly 只读变量
day02="zheshizhidubianlaing"
readonly day02
day02="woxianggaibianni" 没有注释掉之前是输出est.sh: line 10: day02: readonly variable
#day02="woxianggaibianni"
echo $day02
输出:zheshizhidubianlaing
使用 unset 命令可以删除变量。语法:
day03="niyaoshanchuwoma"
unset day03
echo $day03
单引号
单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的;
单引号字串中不能出现单独一个的单引号(对单引号使用转义符后也不行),但可成对出现,作为字符串拼接使用
双引号
双引号里可以有变量
双引号里可以出现转义字符
双引号拼接字符串
day04="runob"
greeting="hello,${day04}"
echo $greeting -----hello,runob
单引号拼接字符串
day05='runobbbbb'
greeting_1='hello,${day05}'
echo $greeting_1 ----hello,${day05}
获取字符串长度:
day06="nikankanwoduochang"
echo ${#day06}
截取字符串
day07="helloword"
echo ${day07:1:4}
从第2个开始截取,一共截取4位
查找字符串位置:
day08="chazhaozifuchuan"
echo `expr index "${day08}" zo` --4
数组
数组名=(value1 value2 value3 value4....) 下标从0开始
arr=(1 2 3 44 556 65 6 667 7 77 )
echo ${arr[@]} ---1 2 3 44 556 65 6 667 7 77
@表示将数组中的元素全部取出
注释:
#表示单行注释
:<<! 要注释的内容 !