解释器在/etc/shells下查看
第一个shell脚本,第一行为解释器
启动运行方式(在环境变量中有区别,对echo输出没影响)
1.当程序执行 ./xxx.sh(执行shell脚本时是在当前shell(称为父shell)开启一个子shell环境,此shell脚本就在这个子shell环境中执行。shell脚本执行完后子shell环境随即关闭,然后又回到父shell中.子进程中的各项变量在子进程结束后不会影响到父进程。不会存在在子shell中的变量)
2.指定解释器运行 /bin/*sh xxx.sh(不会存在在子shell中的变量)
3.source xxx.sh(执行shell脚本时是在当前shell中执行的,脚本中的各项变量在脚本结束后仍然存在。比如在执行xxx.sh后,当前shell中会存在abc=123这个变量。)
4. . xxx.sh(和source xxx.sh相同 为当前shell环境执行)
Shell语法
定义变量
变量名=value(值不能带空格)
变量名=’value’(不能引用变量)
var=”123”
var1=’${var1}456’
echo $var1
输出${var1}456
将以上var1=’’改为var1=””
输出123456
变量名=”value”(都能)
使用变量
var=”123”
echo $var
输出123
var=”123”
echo “${var}456”
输出123456
删除变量
unset 变量名
将命令结果赋值给变量
第一种为反引号(在Tab上面)
注释为#
$符号输入参数
./test.sh 123 244 321 441
123就是$1 244就是$2 .....
从键盘获取输入
数学运算符(())
在里面数学运算
也可以在里面直接判断a<b不用[ a -gt b ]或 test a -gt b了
判断某个条件-xx
短路或 前面一个条件成立就结束
短路与 前面一个条件成立继续
使用[ expression ]时要注意前后空格,否则会报语法错误
If else语法
Case语法
for 循环
for n in 1 2 3 4 5 6 7
do
echo “$n
done
for n in {1..7}
do
echo “$n”
done
for n in $(ls /bin/*sh)
do
echo “$n”
done
$*和$@的区别
传参并且有““时体现区别
传参1 2 3 4 5 6 7
./test.sh 1 2 3 4 5 6 7
for n in “$*”
do
echo “$n”
done
$*的输出1 2 3 4 5 6 7整体
for n in “$@”
do
echo “$n”
done
$@的输出
1
2
3
4
5
6
7
一个一个输出和上面的for n in {1..7}以及1 2 3 4 5 6 7一样
While语法
函数
直接函数名调用