一、Shell脚本使用步骤:

1. 编辑文本文件,如hello.sh
	#!/bin/sh
	echo "hello world"
 2. 添加可执行权限
	chmod a+x hello.sh
 3. 执行程序
	./hello.sh

二、shell脚本文件的编写规范
1、首行声明设置解析器,如:#!/bin/sh
2、注释语法:

单行注释:
# 注释内容
多行注释:
:<<!
注释内容
!

三、脚本文件执行的三种方式

1、sh解释器执行:
sh hello.sh
2、bash解释器执行:
bash hello.sh
3、路径执行方式(先赋权):
./hello.sh

四、多命令处理

在/root/ttest/创建testdir.txt,将“HELLO WORLD”写入testdir.txt文件

#!/bin/bash
touch /root/ttest/testdir.txt
echo "HELLO WORLD" >> /root/ttest/testdir.txt

五、shell变量介绍
查看系统环境变量

通过加载shell配置文件中的变量,共享给shell程序使用
系统级环境变量:shell环境加载全局配置文件中定义的变量
用户级环境变量:shell环境加载用户配置文件中定义的变量

env用于查看系统环境变量
set用于查看系统环境变量+自定义变量+函数

常见环境变量

sh脚本怎么放入docker sh脚本怎么启动_sh脚本怎么放入docker


自定义局部变量:

  1. 可由字母数字下划线组成,不能以数字开头 等号两侧不能有空格。
  2. 在bash环境中,变量默认类型为字符串类型,无法直接进行数值运算。
  3. 变量值如果有空格必须以双引号括起来。
  4. 不能使用关键字作为变量名字。
#变量的定义,var_name=value
age=年龄
#两种方式变量的查看:
$age #直接使用变量名
${age} #使用花括号
#使用花括号可以进行字符串拼接
增:age=年龄
查:echo $age 或者 echo ${age}
改:age=性别
删:unset age

六、常量

变量设置之后不可以修改叫常量

语法:先声明一个变量,再设置为只读,即为常量
val_name=123
readonly val_name

七、自定义全局变量

在当前脚本定义全局变量,这个全局变量可以在当前shell脚本中使用,也可以在子shell环境中使用。

#语法
export val_name1 val_name2
#创建两个sh脚本文件demo1.sh demo2.sh

sh脚本怎么放入docker sh脚本怎么启动_linux_02


八、特殊变量

1、$n
$1~$9代表第1个到第9个输入的参数,10个以上用${},即第10个用${10},$0代表获取文件名

语法:
sh 脚本文件 输入参数1 输入参数2 ...

2、$#
获取所有参数的个数

3、$* $#
含义:都是获取所有参数,用于以后输出所有参数
区别:
不加双引号时,$* $#都一样,格式为:$1 $2...$n;
当加双引号时,"$*"获取所有字符串拼接成一个字符串“$1 $2...$n”
当加双引号时,"$#"获取一组参数列表对象"$1" "$2"..."$n"
通过循环可以看出区别,循环语法如下:
for var in 列表变量
do   #循环开始
 命令 #循环体
done #循环结束

九、常见问题
(1)服务器的编码如果不支持utf-8的话,sh脚本中输出中文就会报错,所以需要在sh脚本文件开头加上:

export LC_ALL=C.UTF-8
export LANG=C.UTF-8