shell

mac2025-12-09  1

shell 脚本

shell 变量: name=”hauzai007” echo $name 注意事项: 变量名和等号之间不能有空格 不能使用标点符号 不能使用bash里的关键字 只读变量: name=”huazai007” 关键字:readonly name 删除变量: unset name 变量类型: 1 局部变量: 局部变量在脚本或命令中定义,仅在当前shell实例中有效,其他shell启动的程序不能访问局部变量 2 环境变量: 所有的程序,包括shell启动的程序,都能访问环境变量,有些程序需要环境变量来保证其正常运行。必要的时候shell脚本也可以定义环境变量。 系统环境变量: 查看所有环境变量:env 删除环境变量:unset HAHA 举个例子: PPID:是当前进程的父进程的PID PWD:当前工作目录。 RANDO:随机数变量。每次引用这个变量会得到一个0~32767的随机数。 查看所有环境变量:env 删除环境变量:unset 用vim在/etc/profile文件中添加我们想要的环境变量 设置新的环境变量 export 新环境变量名=内容 例:export MYNAME=”LLZZ” 生效:source /etc/profile shell 字符串 单引号和双引号的区别: 单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的; 双引号的优点: 双引号里可以有变量 双引号里可以出现转义字符 获取字符串的长度: str=”abcd” echo ${#str} 提取字符串: str=”abcd” #表示从字符串第二个字符开始截取 ,取 4个字符 echo ${str:1:4} shell 数组 定义数组 arr=(aa bb cc) 读取数组 echo ${arr[0]} 获取数组的长度 echo ${arr[@]} echo ${arr[*]} shell 多行注释: :<<EOF xxxx xxxxx EOF shell 基本运算符 算数运算符

加法 减法 乘法 / 除法 % 取余 = 赋值 == 比较(相等) != 不相等 关系运算符 关系运算符只支持数字,不支持字符串,除非字符串的值是数字 -eq 是否相等 -ne 是否不相等 -gt 表示大于 -lt 表示小于 -ge 大于等于 -le 小于等于 布尔运算符 ! -o 或运算 两个表达式只要有一个是true 就返回true [ $a -lt 20 -o $b -gt 100 ] 返回 true -a 与运算 两个表达式都为true才返回true [ $a -lt 20 -a $b -gt 100 ] 返回 false 逻辑运算符 && 等同于 –a || 等同于-o if [[ $a –lt $b && $b –gt 100 ]]; then echo “” else echo “” fi 字符串运算符 =: 检测两个字符是否相等 !=: 检测两个字符不相等 -z : 是否为空 -n :字符串的长度是否为0

文件测试运算符 -b 检测文件是否为块设备 -d 是否为目录 -f 是否为普通文件 -r 是否可读 -w 是否可写 -x 是否可执行 shell echo 命令 name=”huazai007” echo –e “$name \n” -e 开启转义 \n 换行 printf %s 将参数按字面意思解释为字符串 printf “%-10s\n” huazai007 -10s 指一个宽度为10个字符(-表示左对齐,没有则表示右对齐),任何字符都会被显示在10个字符宽的字符内,如果不足则自动以空格填充,超过也会将内容全部显示出来。 %f 将参数按浮点数打印 %-4.2 小数点后面保留两位小数 shell 流程控制 #!/bin/bash a=30 b=50 if [ $a == $b ]; then echo “a等于b” elif [ $a -gt $b ]; then echo “a大于b” elif [ $a -lt $b ]; then echo “a小于b” else echo “没有符合的条件” fi

#!/bin/bash :<<EOF ==================for for i in {1…100} do echo $i done EOF for i in seq 1 100 do echo KaTeX parse error: Expected 'EOF', got '#' at position 32: …==while======= #̲!/bin/bash int=…int<=5)) do echo $int #let “int++” let int=int+1 done [root@master ~]# cat while_true.sh #!/bin/bash :<<EOF while : do echo “xx” done EOF while true do echo “oo” done [root@master ~]# cat until.sh #!/bin/bash a=0 until [ $a -gt 10 ] do echo $a a=expr $a + 1 done [root@master ~]# cat case.sh #!/bin/bash echo “输入一个1到4之间的数字” echo “你输入的数字为:” read num case $num in 1) echo “1” ;; 2) echo “2” ;; 3) echo “3” ;; *) echo “你输入的数字有误!请重新输入” ;; esac

最新回复(0)