shell入门使用

前言

Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是一种命令语言,又是一种程序设计语言。
一般而言,我们会在Liuux系统中使用shell访问系统并及进行一些数据的交互式操作。
这篇博客,南国根据自己平时的经验,总结了一些常用的Shell指令。写的不好,请多指教。

常见的shell指令

第一个shell执行的程序

第一个执行的程序 相比你也猜到是输出hello,world了。 在这里,为了保证入门基础的完整性,在这里我简单描述一下如何用shell输出一个helloworld.

  1. vi创建某个.sh的文件(例如,vi hello.sh)
    echo “Hello, World. I come from China”
  2. 赋予脚本可执行的权限
    chmod +x ./hello.sh
  3. 执行脚本(这里是./hello.sh)
    显示“Hello, world. I come from China”

echo命令用于向窗口输出文本

使用变量:使用一个定义过的变量,只要在变量名前面加上$符号,还可以对变量加上花括号{},变量名外面的花括号是可选的,加不加都行,加花括号是为了帮助解释器识别变量的边界。推荐给所有变量加上花括号,这是个好的编程习惯。

your_name="qinjx"
echo $your_name
echo ${your_name}

for skill in Ada Coffe Action Java; do
    echo "I am good at ${skill}Script"
done

如果不给skill变量加花括号,写成echo “I am good at $skillScript”,解释器就会把$skillScript当成一个变量(其值为空),代码执行结果就不是我们期望的样子了。

使用unset命令删除变量

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

#!/bin/sh
myUrl="http://www.baidu.com"
unset myUrl
echo $myUrl

在包含文件

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

#!/bin/bash
myUrl="http://www.google.com"
readonly myUrl
myUrl="http://www.baidu.com"

运行脚本,结果是: /bin/sh: NAME: This variable is read only.

变量类型

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

Shell中字符串的使用方法

获取字符串长度

string="abcd"
echo ${#string} #输出 4

提取子字符串

以下实例从字符串第 2 个字符开始截取 4 个字符:

string="runoob is a great site"
echo ${string:1:4} # 输出 unoo

Shell 数组

bash支持一维数组(不支持多维数组),并且没有限定数组的大小。
类似于 C 语言,数组元素的下标由 0 开始编号。获取数组中的元素要利用下标,下标可以是整数或算术表达式,其值应大于或等于 0。

定义数组

在 Shell 中,用括号来表示数组,数组元素用"空格"符号分割开。定义数组的一般形式为:
数组名=(值1 值2 … 值n)
例如:

array_name=(value0 value1 value2 value3)
或者
array_name=(
value0
value1
value2
value3
)
还可以单独定义数组的各个分量:
array_name[0]=value0
array_name[1]=value1
array_name[n]=valuen
可以不使用连续的下标,而且下标的范围没有限制。

注意:使用@ 或 * 可以获取数组中的所有元素

读取数组

读取数组元素值的一般格式是:
${数组名[下标]}
例如:
valuen=${array_name[n]}
使用 @ 符号可以获取数组中的所有元素,例如:
echo ${array_name[@]}

获取数组的长度

获取数组长度的方法与获取字符串长度的方法相同,例如:

取得数组元素的个数
length=KaTeX parse error: Expected '}', got '#' at position 2: {#̲array_name[@]} …{#array_name[*]}

取得数组单个元素的长度
lengthn=${#array_name[n]}

Shell基本运算符

Shell 基本运算符
Shell 和其他编程语言一样,支持多种运算符,包括:
算数运算符
关系运算符
布尔运算符
字符串运算符
文件测试运算符

原生bash不支持简单的数学运算,但是可以通过其他命令来实现,例如 awk 和 expr,expr 最常用

expr 是一款表达式计算工具,使用它能完成表达式的求值操作
例如:两个数相加: sum=`expr 2 + 2` #sum=4

两点注意:
• 表达式和运算符之间要有空格,例如 2+2 是不对的,必须写成 2 + 2,这与我们熟悉的大多数编程语言不一样。
• 完整的表达式要被 ’ ’ 包含,注意这个字符不是常用的单引号,在 Esc 键下边。

显示变量
read 命令从标准输入中读取一行,并把输入行的每个字段的值指定给 shell 变量
#!/bin/sh
read name
echo “$name It is a test”
以上代码保存为 test.sh,name 接收标准输入的变量,结果将是:
[root@www ~]# sh test.sh
OK #标准输入
OK It is a test #输出

参考资料:
1.Shell 菜鸟教程

发布了65 篇原创文章 · 获赞 20 · 访问量 1万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章