网站开发需求文档prd模板,替代wordpress的软件,上海网站开发制作,英语教学网站建设意见目录
一、变量定义
变量命名规则#xff1a;
变量的赋值#xff1a;
只读变量#xff1a;
删除变量#xff1a;
二、变量的类型
自定义变量#xff1a;
环境变量#xff1a;
位置参数#xff1a;
预定义变量#xff1a;
三、键盘输入
四、数值运算
为什么…
目录
一、变量定义
变量命名规则
变量的赋值
只读变量
删除变量
二、变量的类型
自定义变量
环境变量
位置参数
预定义变量
三、键盘输入
四、数值运算
为什么数值需要特殊处理
声明变量类型
expr或let数值运算工具
$((表达是)) 或 $[表达式]
五、运算符 一、变量定义
变量命名规则 可以包含字母数字下划线首字母不能用数字开头中间不能又空格 为变量赋值等号之间不能为空格 变量命名不能使用标点符号 不能使用 bash 的关键字 shell 中默认的变量的类型都是字符就算是数字字符也会被认为是字符串如果需要进行字符相加则必须指定变量为数值 如果定义的变量中没有空格则定义变量时可以使用单引号或双引号也可以使用如 namezs 如果变量中包含了空格则必须使用单引号或双引号引起来如 Kent Beck” 可以使用命令的结果作为变量的值但必须使用 或 $() 符号如 : d$(ls /etc) 获取 etc 目录下的所用文件赋给d 环境变量一般用大写编程习惯 示例 # 以下时合法的变量名
ABC
ROOT__PATH
_var
var2
# 以下时非法的变量名
12abc
?abc 变量的赋值 # 显示负值
namezs #正确
name zs #错误
# 变量的使用
echo $name
echo ${name} #也可以这样写花括号是可选的
# 使用语句为变量赋值
for f in $(ls /etc) # 将/etc目录下的所有文件循环赋给f变量
for f in ls /etc # 这样写也可以
# 变量可以重新定义
nameww
echo $name
namezl
echo $name 只读变量 # 定义只读变量该变量不能修改
nameavdfd
readonly name
# 运行时会提示该变量是只读变量 删除变量 # 删除name变量
unset name
# set可以查看所有的变量包括环境变量和用户自定义的变量
set 二、变量的类型 自定义变量用户自己定义的变量或者叫作本地变量 环境变量保存和系统操作环境相关的变量可以添加环境变量 位置变量主要用于向脚本中传递参数或数据变量名不能自定义作用固定 预定义变量在 Bash 中已经定义好的变量变量的作用也是预先定义好的 自定义变量
[rootlocalhost ~]# namezs
[rootlocalhost ~]# echo
[rootlocalhost ~]# echo $name
zs
[rootlocalhost ~]# name$name 123
#name变量加一个空格和123
[rootlocalhost ~]# echo $name
zs 123
[rootlocalhost ~]# name$name234
#注意与其他编程语言不同不能用连接两个字符串
[rootlocalhost ~]# echo $name
zs 123234
[rootlocalhost ~]# echo ${name} #也可以这样来用变量
环境变量
用户自定义的变量也叫本地变量只在定义它的当前shell中才也可以使用。环境变量会在当前shell和当 前shell的所有子shell中生效。 如果将环境变量写入相应的配置文件则这个变量可以在所有的shell中 使用。可以理解为环境变量与本地变量的区别就是作用范围不同
设置环境变量
命令格式export 变量名变量值
查看env 示例 [rootlocalhost ~]# namezs
[rootlocalhost ~]# export name
[rootlocalhost ~]# age18
[rootlocalhost ~]# set
#在当前的shell中可以看到name和age变量
...
age18
colors/root/.dircolors
namezs
[rootlocalhost ~]# bash
#打开一个子shell则只用看到name变量也可以使用uset删除
[rootlocalhost ~]# set
...
namezs 常见的环境变量 PATH: 查找命令的路径可以使用 echo $PATH 查看。 位置参数 $n n 是数字 $0 表示命令的本身 $1-9 表示第 1 到第 9 个参数 10 以上的参数需要用 {} 括起 来例如 ${10} $* 表示命令行中的所有参数 $* 把所有参数看成一个整体 $ 表示命令行中的所用参数与 $* 不同的是 $ 把每个参数区分对待可以将这个整体看作是 一个数组数组中的每个元素都是独立的 $# 代表命令行中所有参数的个数 示例 [rootlocalhost ~]# vim paramdemo.sh
#!/bin/bash
echo $0
echo $1
echo $2
echo $3
[rootlocalhost ~]# ./paramdemo.sh 1 2 3 4
bash: ./paramdemo.sh: 权限不够
[rootlocalhost ~]# chmod 755 paramdemo.sh
[rootlocalhost ~]# ./paramdemo 1 2 3 4
bash: ./paramdemo: 没有那个文件或目录
[rootlocalhost ~]# ./paramdemo.sh 1 2 3
./paramdemo.sh
1
2
3
[rootlocalhost ~]# vim paramdemo02.sh
#!/bin/bash
echo 参数个数: $#
echo 所有的参数作为一个整体: $*
echo 所有的参数(区分对待每个参数): $
[rootlocalhost ~]# chmod 755 paramdemo02.sh
[rootlocalhost ~]# ./paramdemo02.sh 1 2 3 4 5
参数个数: 5
所有的参数作为一个整体: 1 2 3 4 5
所有的参数(区分对待每个参数): 1 2 3 4 5 预定义变量 $? 最后一次执行命令的返回状态如值为 0 则说明成功如值为非 0 则说明命令执行不正确 $$ 当前进程的进程号 $! 后台运行的最后一个进程的进程号 示例 [rootlocalhost ~]# ls
abc index.html index.html.2 paramdemo02.sh sh
anaconda-ks.cfg index.html.1 index.html.3 paramdemo.sh
[rootlocalhost ~]# echo $?
0
[rootlocalhost ~]# ls /fdfdf
ls: 无法访问/fdfdf: 没有那个文件或目录
[rootlocalhost ~]# echo $?
2
[rootlocalhost ~]# 三、键盘输入 命令 read [ 选项 ] [ 变量名 ] 选项 -p 提示信息等待输入时的提示 -t 秒数用于指定等待的时间单位时秒 -n 字符数只要接收到指定的字符数就会执行 -s 隐藏输入的数据用于机密信息的输入比如密码 示例 [rootlocalhost ~]# vim readdemo.sh
#!/bin/bash
read -t 60 -p 请输入账号: userName
echo 输入的账号是: $userName
read -s -t 60 -p 请输入密码 password
echo -e \n
echo “输入的密码: $password”
read -n 1 -t 30 -p 请选择[y/n] select
echo -e \n
echo 输入的选择是: $select
[rootlocalhost ~]# chmod 755 readdemo.sh
[rootlocalhost ~]# ./readdemo.sh
请输入账号: zs
输入的账号是: zs
请输入密码
“输入的密码: 123456”
请选择[y/n]y
输入的选择是: y
[rootlocalhost ~]# 四、数值运算 为什么数值需要特殊处理 在 shell 中变量默认都是字符型的不管是其字面值是不是数值所以当两个变量相加时默认是字符串 拼接的操作例如 [rootlocalhost ~]# num11
[rootlocalhost ~]# num22
[rootlocalhost ~]# num3$num1$num2
[rootlocalhost ~]# echo $num3
12 声明变量类型 格式 declare [/-][ 选项 ] 变量名 - 给变量设置类型属性 取消变量的类型属性注意与我们的日常习惯不同 -i 将变量指定为整型 -x 将变量声明为环境变量 -p 显示指定变量被设置的类型 示例 [rootlocalhost ~]# num11
[rootlocalhost ~]# num22
[rootlocalhost ~]# num3$num1$num2
[rootlocalhost ~]# echo $num3
12
[rootlocalhost ~]# declare -i num4$num1$num2
[rootlocalhost ~]# echo $num4
3
#此处是数值相加而不是字符串相加了
[rootlocalhost ~]# expr或let数值运算工具 [rootlocalhost ~]# a1
[rootlocalhost ~]# b2
[rootlocalhost ~]# c$(expr $a $b)
#注意空格
[rootlocalhost ~]# echo $c
3
[rootlocalhost ~]# $((表达是)) 或 $[表达式] 推荐使用的方式示例 [rootlocalhost ~]# a5
[rootlocalhost ~]# b6
[rootlocalhost ~]# c$((ab))
[rootlocalhost ~]# echo $c
11
[rootlocalhost ~]# a8
[rootlocalhost ~]# b-9
-bash: b-9: 未找到命令
[rootlocalhost ~]# b9
[rootlocalhost ~]# c$[a b]
[rootlocalhost ~]# echo $c
17
[rootlocalhost ~]# 五、运算符 优先级运算符说明13-单目正负运算符12!, ~逻辑非按位取反或补码11*, /, %乘除取余10, -加减9, 按位左移按位右移8, , , 大于小于大于等于小于等于7, !等于不等于6按位5^按位异43逻辑21, , -, *, /, %, , ^各种赋值 优先级的数值越大优先级越高注意和其他语言的数值月底优先级越高不同。 示例 [rootlocalhost ~]# num $(( (15 34) * 5 / 2 ))
-bash: num: 未找到命令
[rootlocalhost ~]# num$(( (15 34) * 5 / 2 ))
[rootlocalhost ~]# echo num
num
[rootlocalhost ~]# echo $num
122
[rootlocalhost ~]# b$((19%2))
[rootlocalhost ~]# echo $b
1
[rootlocalhost ~]# c$(( 1 0 ))
[rootlocalhost ~]# echo $c
0
[rootlocalhost ~]#