Appearance
使用 shell 脚本注册一万个用户
2019-12-12 6:2:33
shell
本文提到的Shell,都是指linux系统中相关的Shell程序和Shell脚本。
Shell是一个用C语言编写的程序,它为用户提供了和linux操作系统交流的方式。
Shell有两层含义,其一指Shell程序自身,它读取用户提供的脚本,执行系统相关操作;其二指Shell脚本,是一种脚本语言,由用户编写,由Shell程序解读,从而操作系统。
从这里开始,下文如果没有特指其他,提到的Shell均指Shell语言。
最广泛使用的Shell是Bash(Bourne Again Shell),除此之外,常见的Shell还有
- Bourne Shell(/usr/bin/sh或/bin/sh)
- Bourne Again Shell(/bin/bash)
- C Shell(/usr/bin/csh)
- K Shell(/usr/bin/ksh)
- Shell for Root(/sbin/sh)
由于易用和免费,Bash最为广泛使用,同时它也是多数Linux的默认Shell。
Shell程序
按照国际惯例的hello world
shell
#!/bin/bash
echo "Hello World !"#!是一个约定好的标记,它告诉系统用哪个Bash来执行下面的程序。echo用于输出文本。
变量
定义一个变量像这样
shell
name="xt"定义变量的要求如下
- 命名只能使用英文字母,数字和下划线,首个字符不能以数字开头。
- 中间不能有空格,可以使用下划线(_)。
- 不能使用标点符号。
- 不能使用bash里的关键字(可用help命令查看保留关键字)。
使用一个定义过的变量,在变量左边加美元符号即可。
shell
echo $name字符串
单双引号都可以定义字符串,区别和php差不多。
- 单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的;
- 单引号字串中不能出现单独一个的单引号(对单引号使用转义符后也不行),但可成对出现,作为字符串拼接使用。
shell
str='this is a string'如果是双引号,则没有那么多的限制。
shell
your_name='xt'
str="Hello, I know you are \"$your_name\"! \n"
echo -e $str- 双引号里可以有变量
- 双引号里可以出现转义字符
双引号可以用于字符串拼接
shell
greeting="hello, "$your_name" !"
greeting_1="hello, ${your_name} !"数组
shell
数组名=(值1 值2 ... 值n)shell
array_name=(
value0
value1
value2
value3
)读取数组
shell
${数组名[下标]}shell
valuen=${array_name[n]}@可以表示数组中所有元素
shell
echo ${array_name[@]}注释
#是行注释
shell
##### 用户配置区 开始 #####
#
#
# 这里可以添加脚本描述信息
#
#
##### 用户配置区 结束 #####shell循环
shell
for var in item1 item2 ... itemN
do
command1
command2
...
commandN
doneshell curl post
这样可以发送一条curl
shell
curl -i -X POST -H "Content-type:application/x-www-form-urlencoded" -d "params1=value1" http://url.example所以,循环curl的代码就是
shell
#!/bin/bash
source_data_str=(773814)
for i in ${source_data_str[@]};
do
curl -i -X POST -H "Content-type:application/x-www-form-urlencoded" -d "sourceDataIdStr=$i" domain.example
done