Linux Shell——bash shell 脚本简介

bash shell 脚本简介

shell 运行环境

如果你运行的是 Unix 或 Linux 系统,例如 Ubuntu,Red Hat,SUSE Linux,还有macOS,都是内置了 bash shell 的,所以你不需要额外配置所谓的开发环境。

我的 shell 环境是 macOS Sierra 版本,如果你用的是其他 Linux 系统,后面的例子基本上都是可以运行的。

首先,打开Terminal 命令行,先检查下你的系统的 shell 版本:

echo $BASH_VERSION

bash 命令层次结构

命令类型

bash shell 内置了一个type命令会根据你输入的单词来显示此命令的类型,主要有以下五种类型:

  • 别名
  • 方法
  • shell 内置命令
  • 关键字
  • 文件

例如,我们经常使用的cd命令,我们来执行下面的命令来看下它属于哪种类型。

type cd

同时,为了查看更加详细的信息,可以使用

type -a cd

如果想查看的信息更加简洁和适合人们理解,可以使用如下命令和参数:

type -t ls
PATH 命令

Linux会检查配置在 PATH 环境中的指定路径的程序是否可以执行。通常情况下,当前目录是不会被查找,除非你把它配置到PATH 中,我们可以执行如下命令,把当前目录加到 PATH 环境中。

export PATH=$PATH:.

接下来,我们创建一个存放 shell 脚本的目录bin,可以用如下命令来执行:

$ test -d $HOME/bin || mkdir $HOME/bin

当然你可以在你的主目录下手动创建目录 bin。上面的意思是检查主目录是否有 bin 目录,没有则创建。

创建脚本

没啥说的,学习每一种语言的第一个程序就是“Hello,World”,文件名叫 hello1.sh。

#! /bin/bashecho "Hello World"exit 0

解释一下:
#!/bin/bash:通常情况下,脚本的默认第一行代码就是它。“#!”又被成为shebang。它用来告诉系统的解释器来执行脚本。除了 bash,我们还可以PHP,Perl等其他脚本。
echo "Hello World":echo 是一个内置的命令,用来表示标准输出,类似于 Java 中的System.out.println()
exit 0:表示脚本结束退出,exit有一个整型参数,0表示正常退出,非0表示脚本执行中有错误。

执行脚本

现在,我们来执行上面的脚本,你可以在命令行下,进入到脚本文件存在的目录,也可以是在任意目录下,但是,在执行的时候,文件的路径就应该为绝对路径:

bash $HOME/bin/hello1.sh

执行结果为,打印出“Hello world”。

Tip
在执行上面的命令中,可能会报错,提示权限不足或访问拒绝的错误。这是因为 hello1.sh 没有执行的权限。所以我们使用如下命令给文件加上对应的权限。
chmod +x $HOME/bin/hello1.sh

脚本中的一些特殊参数

在脚本中,有些表示特殊含义的参数,下面列出常见的几个:

参数标识符 含义
$0 文件本身的名字
$1 表示位置的参数,第一个参数传递给脚本
${10} 在超过两位数的参数时,使用大括号限定起来
$# 参数的个数
$* 表示所有的参数

如下所示:

#! /bin/bashecho "file name $(basename $0)"echo "Hello $1"echo "Hello $*"echo "Args count: $#"exit 0

输出的结果为:

重视引号的正确使用

到现在,我们使用了双引号来包围字符串用于 echo 命令的输出。
在第一个 Hello1.sh中,使用单引号还是双引号,效果是一样的。下面的两行代码是等效的。

echo "Hello World"echo ‘Hello World‘

但是,在包含有变量的引用时,单引号和双引号的效果是不一样的。

echo "Hello $1" // 打印传递的值,例如 Tim。echo ‘Hello $1‘ // 把$1原样打印出来

所以,在有变量的字符串里,推荐使用双引号。这时,$1就会被变量的值所替代,而不是作为字符串显示出来。

打印脚本名字

前面提到过,特殊参数$0用来表示脚本的名字,这里的名字会带有完整的路径,如果我们只想要文件名的话,可以使用以下代码:

echo "You are using $(basename $0)"

这里$(….)语法的作用是我们先执行括号里面的命令,然后然后把结果赋给外面不知名的变量。
$(….)语法还有一种相等的写法,注意,是键盘上数字1左边的按键,不是单引号。

echo "You are using `basename $0`"

个人不推荐这种写法,太容易混淆,不容易差错。

调试你的脚本

如果想调试你的脚本,bash给我们提供了两个选项:-v 和-x。
如果我们想逐行详细地查看脚本的内容,可以使用-v 选项。

#! /bin/bashecho "file name $(basename $0)"echo "Hello $1"echo "Hello $*"echo "Args count: $#"exit 0

更常用的是-x 选项,它们在执行时显示命令。当我们决定选择分支的时候,更加使用。

可以看到,basename最先执行了,使用此选项不会看到代码的详情。

时间: 2024-12-28 17:12:25

Linux Shell——bash shell 脚本简介的相关文章

Linux的Bash Shell详解

一.Bash Shell概述 1.什么是bash         bash是Bourne Again Shell的简称,是从unix系统中的sh发展而来的,是用户和Linux内核交互的工具,用户通过bash操作内核完成系统的使用和管理. 2.shell的种类         /bin/sh(已经被/bin/bash替代)         /bin/bash(默认的shell)         /bin/ksh(源自贝尔实验室,兼容bash)         /bin/tcsh(整合C shell

linux基础——bash shell环境配置

想要用好bash shell,首先得搞清楚bash shell环境的配置,只有配置好了,我们用起来才会得心应手,要想配置好,必须了解清楚bash配置文件的类型,再根据实际需求做一些相应的添加或修改就可以了.一.bash的配置文件(一)按生效范围划分:全局配置.个人配置 1.全局配置:  /etc/profile  /etc/profile.d/*.sh  /etc/bashrc 2.个人配置:  ~/.bash_profile  ~/.bashrc (二)按功能划分:profiile类.bash

如何在Windows 10安装和使用Linux的Bash shell

转载自:百度经验 Windwos 10 的周年更新为开发人员提供一个大的新功能:一个完整的,基于Ubuntu的Bash shell中,可以直接在Windows上运行Linux软件. 这使得"Linux子系统用于Windows 10成为可能. 方法/步骤 确保您使用至少是Windows 10的14316版本. 这种方法只适用于64位版本的Windows 10. 打开设置应用程序和头部更新和安全>对于开发. 在这里启动"开发者模式"开关,使开发者模式. 接下来,打开控制面板

Linux中bash shell入门

▲初探shell Shell分为图形界面shell(如win中的explorer,linux中的kDE和GNOME)和命令行shell.Shell是一个命令解释器,又分为交互式和非交互式.也可分为登陆式shell(需输入用户名和密码)和非登陆式shell Linux中支持的shell在/etc/shells文件中 Linux使用的默认shell为bash(Bourne Again Shell) ? type [-at] name????显示name是外部命令还是bash内置命令 ????参数-t

跟鸟哥学Linux之——bash shell 总结

bash是Linux内定的shell,在前边讲解的很多命令都是通过bash的环境来处理的.下边就对bash来做一个从整体到局部的认识.对于bash我大致将其分为了三部分:变量.操作环境的配置和命令的输出操作.对bash的总结做了如下思维导图: 变量 对于变量从三方面来介绍:变量的类型.变量的操作和变量的内容操作.1.对于类型有环境变量和特殊变量,有一个较为突出的是数组变量,其中学习了数组的声明.引用.下标查看和元素个数查看等等.2.对于变量的操作有查看.声明.取消和read读的操作,其中变量的声

linux之bash shell

GNU bash ======================================================== 通常计算机硬件是由运算器.控制器.存储器.输入/输出设备等等这些物理设备共同组成的,而能够让机箱内各种硬件设备各司其职的东西就叫做系统内核.Linux系统的内核负责驱动硬件.管理活动和分配/管理硬件资源等等任务,如此说来系统内核对计算机正常稳定的运行来讲可真的是太重要了,因此一般不建议直接去编辑内核中的参数,而是让用户通过基于“系统调用接口”开发出的程序/服务来管理

Linux Shell Bash 精彩脚本示例

东西太大,可以加本人QQ:1401354763

Linux之bash shell特性

一.shell是什么? Shell 本身是一个用C语言编写的程序,它是用户使用Unix/Linux的桥梁,用户的大部分工作都是通过Shell完成的.Shell既是一种命令语言,又是一种程序设计语言.作为命令语言,它交互式地解释和执行用户输入的命令:作为程序设计语言,它定义了各种变量和参数,并提供了许多在高级语言中才具有的控制结构,包括循环和分支. 如图shell是一个应用程序,是用户管理应用程序的一个接口. 二.广义上shell的分类 GUI:图形用户界面 KDE,GNOME,XFCE CLI:

linux命令——bash shell 配置

一.shell的类型 站在用户登录的角度来说,shell的类型有: 1.登录式shell: (读取环境配置) 正常通过某终端登录: su - USERNAME su -l USERNAME 2.非登录式shell:(不读取环境配置) su USERNAME 图形终端下打开的命令窗口 自动执行的shell脚本 2.bash的配置文件: 全局配置: /etc/profile,/etc/profile.d/*.sh,/etc/bashrc 个人配置: ~/.bash_profile,~/.bashrc