- Shell入门基础
- 创建脚本
- 脚本执行权限
- 接收用户输入的参数
- 参数扩展
- 第一个Shell程序:Hello World!
- Shell命令的执行
- Shell 程序退出状态
Shell的起源分类等纯理论之类的我感觉就没有必要阐述了,大家百度都可以找到,而且会比我这一两句说的详细清楚,所以我决定直接阐述Shell(命令解释器)一些具体的基础操作。
创建脚本` #! /bin/sh `
脚本执行权限shell程序中的注释以“#”符号开始,直到该行结束。但#!/bin/sh是一种特殊形式的注释,其中“#!”字符告诉系统后面紧跟的参数是用来执行文本的程序。
chmod [options] filename 用于修改用户某个文件执行权限
其中r、w和x分别表示读取、写入和执行权限(4、2、1也可分别表示相同权限);u、g和o分别表示文件所有者、所有者所属的组以及其他组的用户;+、-分别表示授予和收回权限。
[root@localhost ~]# ll 查看文件访问权限(也可以采用[root@localhost ~]# ls -l) [root@localhost ~]# vi 1.sh 创建一个名为1.sh的文件 [root@localhost ~]# ll 1.sh 查看1.sh文件的访问权限 -rw-r--r--. 1 root root 101 May 7 20:43 1.sh 除去第一个-后面每三个为一组,依次是文件所有者、所有者所属组以及其他组用户 [root@localhost ~]# chmod u+x 1.sh 给所有用户添加执行权限(也可以使用[root@localhost ~]# chmod 744 1.sh) [root@localhost ~]# ll 1.sh -rwxr--r--. 1 root root 101 May 7 20:43 1.sh
接收用户输入的参数使用数字修改时777是一个特殊的权限,对所有用户授予了所有权限。
| 变量名 | 说明 |
|---|---|
| #n | 表示传递给脚本的第n个参数,例如$1 表示第1个参数,$2表示2个参数… |
| $# | 命令行参数的个数 |
| $0 | 当前脚本的名称 |
| $* | 以“参数1 参数2 参数3…”的形式返回所有参数的值(将所有参数一一个字符串的形式返回) |
| $@ | 以“参数1” “参数2” "参数3”…的形式返回所有参数的值(如果用户传递的参数中包含空格或者其他的特殊字符,需要使用 @ 来 获 取 所 有 的 参 数 的 值 , 不 能 使 用 @来获取所有的参数的值,不能使用 @来获取所有的参数的值,不能使用*) |
| $_ | 保存之前执行的命令的最会一个参数 |
#! /bin/sh #传递脚本参数 echo "$# 个命令行参数" echo 当前脚本名称 "$0" echo "$*" echo "$@" [root@localhost ~]# . test01.sh a b "c d e " 3 个命令行参数 当前脚本名称 bash a b c d e a b c d e
参数扩展注意:对于包含空白符或存在特殊字符的参数,需使用单引号或者双引号进行传递。(由单引号或双引号引起来的字符串作为一个参数传递,传递时会自动去掉引号)关于用户传递参数超过9个的输入后续更新会把链接粘贴在这。
前面我们使用的 ls -l 命令中的 -l 就是 ls 命令的一个参数,用于以长格式的方式显示当前目录内容。采用-作为连字符。而Shell命令中可采用getopts命令实现相同功能。
第一个Shell程序:Hello World!任何一门语言的开始都是经典的Hello World!所以让我们也来实现一下简单的Hello World!程序吧。首先在终端利用vi编辑器创建一个Hello_World.sh的脚本程序,然后进入后在英文状态单机 i 进入编辑模式,然后输入如下代码,输入完成后单击 Esc 在输入:wq,保存退出。
#! /bin/bash 指定命令解读器 #输出字符串 #注释符 echo "Hello World!"
Shell命令的执行其中#! /bin/bash用于告诉使用哪一个Shell执行当前程序。#!标识后指定解释器的绝对路径,即bash Shell的绝对路径。单独出现的#表示行注释,而:<
Shell程序存在三种执行方式
第一种就是之前提到的修改权限使其直接执行 第二种调用Shell脚本解释器执行 [root@localhost ~]# /bin/bash test01.sh 第三种通过source命令执行 [root@localhost ~]# source Hello_World.sh 注:一二本质相同,一是直接指定解释器,二是先调用解释器再解释脚本文件。Shell 程序退出状态
在Unix或者Linux中,对于每个命令都会返回一个范围在0~255的退出状态码。通常情况,成功退出的状态码为0,返回非0值基本为不成功状态,即错误码。用户可通过exit语句指定退出状态码。



