#介绍简单的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
或
浙公网安备 33010602011771号