1.Shell脚本的基础:

 Shell脚本是基本命令的组合,结合命令流程控制。

 第一行(顶格写):#! /bin/bash

 Shell脚本的运行方式:(1)首先要使脚本具有执行权限: chmod +x  test.sh          然后./test.sh执行脚本

                                    (2)bin/sh  test.sh

2.Shell脚本中变量类型:本地变量(局部变量)、环境变量、位置变量、特殊变量

(1)本地变量(局部变量):本地整个bash进程都可以使用,仅对当前代码段有用,其他shell启动的程序不能访问局部变量

(2)环境变量:作用域为当前shell进行及其子进程,命令行中启动的脚本会继承当前shell环境变量,系统自动执行的脚本(非命令行启动)就需要自我定义需要的环境变量

(3)位置变量:$1,$2,用来传递参数

$ chmod +x test.sh 

$ ./test.sh 1 2 3

Shell 传递参数实例!
执行的文件名:./test.sh
第一个参数为:1
第二个参数为:2
第三个参数为:3

例如:#!/bin/bash

echo "Shell 传递参数实例!";

echo "执行的文件名:$0";

echo "第一个参数为:$1";


echo "第二个参数为:$2";


echo "第三个参数为:$3";

(4)特殊变量: $?:保存上一个命令执行状态返回值     $#:输入参数的个数       $*:参数列表          $@:参数列表

                      $0:执行脚本的名字       $_:代表上一个命令的最后一个参数      $!:代表最后执行的后台命令的PID

不同点:只有在双引号中体现出来。假设在脚本运行时写了三个参数 1、2、3,,则 " * " 等价于 "1 2 3"(传递了一个参数),而 "@" 等价于 "1" "2" "3"(传递了三个参数)。

例如以下shell脚本例子:

#!/bin/bash
echo "-- \$* 演示 ---"
for i in "$*"; do
    echo $i

done

echo "-- \$@ 演示 ---"
for i in "$@"; do
    echo $i
done

shell脚本的执行:

$ chmod +x test.sh 

$ ./test.sh 1 2 3

-- $* 演示 ---
1 2 3
-- $@ 演示 ---
1
2

3

3.变量的操作:

   (1)变量名称:只能包含字母、数字、下划线,并且不能以数字开头,不能与系统已有变量重名,见名知意

   (2)变量定义:   your_name="runoob.com"注意,变量名和等号之间不能有空格,要区别于编程语言中的编程习惯

   (3)查看变量:   set:查看所有变量      查看当前shell中的环境变量(printenv、env、export)

   (4)变量引用:   ${NAME},如果要打印变量则使用echo ${NAME}

   (5)撤销变量:  unset VARNAME

   (6)打印变量长度: var="ddddddd"     echo ${#var}

   (7)双引号: 双引号里可以有变量 ,比如:echo时对变量进行替换,echo  "${PATH}"

                   双引号里可以出现转义字符,比如:echo -e "asdn\nadadss"

   (8)单引号: 单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的;echo时不做变量替换,echo '${PATH}'

     例如:echo 'nihao'nihao'ssss'                  输出为:nihaonihaossss

               echo 'nihao"sss"lll'                         输出为:nihao"sss"lll

               echo 'nihao"${PATH}"sadad'          输出为:nihao${PATH}sadad

     (9)提取子字符串:  string="runoob is a great site"       echo ${string:1:4} # 输出 unoo