#介绍简单的shell基本语法

shell中的变量包括“系统变量”和“用户自定义变量”

系统变量可以通过set命令查看 包括$HOME $PWD $SHELL $USER等

定义变量方法: 变量=值 PS:等号两侧不能有空格  变量名称一般习惯大写 变量值双引号和单引号有区别 :双引号仅将空格脱意,单引号会将所有特殊字符脱意

举例:STR="hello world"  A=9  (unset A :撤销变量A) readonly B=2 声明静态变量B=2 不能unset

export 变量名 可以让这个变量的值被共享到subshell中

引入:在linux里,source、sh、bash、./都可以执行shell script文件,那它们有什么不同吗?

1、source

source a.sh

当前shell内去读取、执行a.sh,而a.sh不需要有"执行权限"

source命令可以简写为"."

. a.sh

注意:中间是有空格的。

 

2、sh/bash

sh a.sh
bash a.sh

都是打开一个subshell去读取、执行a.sh,而a.sh不需要有"执行权限"

通常在subshell里运行的脚本里设置变量,不会影响到父shell的。

 

3、./

./a.sh
#bash: ./a.sh: 权限不够
chmod +x a.sh
./a.sh

打开一个subshell去读取、执行a.sh,但a.sh需要有"执行权限"

可以用chmod +x添加执行权限

 

继续基本语法:

A=`ls -la` 反引号,运行里面的命令,并把结果返回给变量A  该命令等价于 A=$(ls -la)

shell中的特殊变量: $? 表示上一个命令的退出状态(如果上一个命令执行成果状态值位0,不成功则有对应的错误代码) 

          $$ 表示当前进程编号  $0 表示当前脚本名称

          $n 表示脚本的第几个参数(n是具体数字且要求n>=1)  $# 表示参数的个数 常用语循环

          $*和$@表示参数列表  区别: "$*"会变成一个字符串  "$@" 还是参数列表

循环语法:

for循环:第一种 for N in 1 2 3

         do

              echo $N

        done

或 

 

posted on 2020-01-23 11:31  thwang  阅读(207)  评论(0)    收藏  举报