隔壁小王的shell命令1

   日期:2020-11-09     浏览:94    评论:0    
核心提示:Shell 脚本Shell 脚本(shell script),是一种为 shell 编写的脚本程序。Shell 环境Linux 的 Shell 种类众多,常见的有:Bourne Shell(/usr/bin/sh或/bin/sh)Bourne Again Shell(/bin/bash)C Shell(/usr/bin/csh)K Shell(/usr/bin/ksh)Shell for Root(/sbin/sh)……在一般情况下,人们并不区分 Bourne Shell 和 Bourn

Shell 脚本

Shell 脚本(shell script),是一种为 shell 编写的脚本程序。

Shell 环境

Linux 的 Shell 种类众多,常见的有:
Bourne Shell(/usr/bin/sh或/bin/sh)
Bourne Again Shell(/bin/bash)
C Shell(/usr/bin/csh)
K Shell(/usr/bin/ksh)
Shell for Root(/sbin/sh)
……
在一般情况下,人们并不区分 Bourne Shell 和 Bourne Again Shell,所以,像 #!/bin/sh,它同样也可以改为#!/bin/bash。
#!告诉系统其后路径所指定的程序即是解释此脚本文件的 Shell 程序。

第一个 Shell 脚本

打开文本编辑器(可以使用 vi/vim 命令来创建文件),新建一个文件 b.sh,扩展名为 sh(sh代表shell),扩展名并不影响脚本执行。

输入一些代码,第一行一般是下图

"#!" 是一个约定的标记,它告诉系统这个脚本需要什么解释器来执行,即使用哪一种 Shell。
echo 命令用于向窗口输出文本。

如遇到下列错误原因为权限不够。使用chmod命令为root使脚本具有执行权限

[root@192 myshell]# ./b.sh
-bash: ./b.sh: Permission denied
[root@192 myshell]# chmod 744 b.sh
chmod +x ./b.sh  #使脚本具有执行权限
./b.sh  #执行脚本

注意,一定要写成 ./b.sh ,而不是b.sh,要用 ./test.sh 告诉系统说,就在当前目录找。

[root@192 myshell]# ./b.sh
Hello World !

Shell变量

Shell 变量

定义变量时,变量名不加美元符号($,PHP语言中变量需要)
注意,变量名和等号之间不能有空格。

首个字符必须为字母(a-z,A-Z)。
中间不能有空格,可以使用下划线(_)。
不能使用标点符号。
不能使用bash里的关键字(可用help命令查看保留关键字)

使用变量

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

your_name="wangyy"
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当成一个变量(其值为空),代码执行结果就不是我们期望的样子了。

your_name="tom"
echo $your_name
your_name="alibaba"
echo $your_name

这样写是合法的,但注意,第二次赋值的时候不能写 $your_name=“alibaba”,使用变量的时候才加美元符( $)。

Shell 字符串

单引号

单引号字符串的限制:

  • 单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的;
  • 单引号字串中不能出现单引号(对单引号使用转义符后也不行)。

双引号

双引号的优点:

  • 双引号里可以有变量
  • 双引号里可以出现转义字符
    拼接字符串
your_name="wangyy"
greeting="hello, "$your_name" !"
greeting_1="hello, ${your_name} !"
echo $greeting $greeting_1

输出

获取字符串长度

echo ${#greeting}


提取子字符串

`echo ${ greeting:0:5}   输出hello


查找子字符串

echo `expr index "$greeting" name`

Shell 数组

在Shell中,用括号来表示数组,数组元素用"空格"符号分割开。定义数组的一般形式为:

数组名=(12 ... 值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]}
valuen=${ array_name[@]}

@为所有数组 n为数组标识

shell注释

以"#"开头的行就是注释,会被解释器忽略。

sh里没有多行注释,只能每一行加一个#号
如:
如果遇到大段的代码需要临时注释起来,过一会儿又取消注释,可以把这一段要注释的代码用一对花括号括起来,定义成一个函数,没有地方调用这个函数,这块代码就不会执行,达到了和注释一样的效果。

Shell 传递参数

Shell 传递参数

我们可以在执行 Shell 脚本时,向脚本传递参数,脚本内获取参数的格式为:$n。n 代表一个数字,1 为执行脚本的第一个参数,2 为执行脚本的第二个参数,以此类推……

以下实例我们向脚本传递三个参数,并分别输出,其中 $0 为执行的文件名:

#!/bin/bash
echo "Shell 传递参数实例!";
echo "执行的文件名:$0";
echo "第一个参数为:$1";
echo "第二个参数为:$2";
echo "第三个参数为:$3";

Shell 数组

Shell 数组

与大部分编程语言类似,数组元素的下标由0开始。
Shell 数组用括号来表示,元素用"空格"符号分割开,语法格式如下:

array_name=(value1 ... valuen)

实例:

my_array=(A B C D)                                 
我们也可以使用下标来定义数组:
array_name[0]=value0
array_name[1]=value1
array_name[2]=value2

读取数组
读取数组元素值的一般格式是:

${ array_name[index]}

实例:

my_array=(A B C D)
echo "第一个元素为: ${ my_array[0]}"
echo "第二个元素为: ${ my_array[1]}"
echo "第三个元素为: ${ my_array[2]}"
echo "第四个元素为: ${ my_array[3]}"


获取数组中的所有元素
使用@ 或 * 可以获取数组中的所有元素,例如:

my_array[0]=A
my_array[1]=B
my_array[2]=C
my_array[3]=D

echo "数组的元素为: ${ my_array[*]}"
echo "数组的元素为: ${ my_array[@]}"

执行脚本,输出结果为:

获取数组的长度
获取数组长度的方法与获取字符串长度的方法相同但是要在数组名前加入#,例如:

#!/bin/bash

my_array[0]=A
my_array[1]=B
my_array[2]=C
my_array[3]=D

echo "数组元素个数为: ${ #my_array[*]}"
echo "数组元素个数为: ${ #my_array[@]}"

输出结果为:

 
打赏
 本文转载自:网络 
所有权利归属于原作者,如文章来源标示错误或侵犯了您的权利请联系微信13520258486
更多>最近资讯中心
更多>最新资讯中心
0相关评论

推荐图文
推荐资讯中心
点击排行
最新信息
新手指南
采购商服务
供应商服务
交易安全
关注我们
手机网站:
新浪微博:
微信关注:

13520258486

周一至周五 9:00-18:00
(其他时间联系在线客服)

24小时在线客服