shell(命令排序_通配符_变量)
命令排序
- 在一行,敲多个命令,;不具逻辑判断
1
.
/config
;
make
;makeinstall
- && || 具备逻辑判断,要看命令返回值 echo $?
12
.
/config
&&
make
&& makeinstall
ping
-cl 10.18.42.1 &>
/dev/null
&&
echo
"up"
||
echo
"down"
# &>/dev/null 混合重定向
- 其它
123
command
&
# 后台执行
command
&>
/dev/null
#混合重定向
command1 && command2 命令排序,逻辑判断(上一个命令的返回值为真,才会执行)
通配符(元字符) 表示的不是本意
1 2 3 4 5 6 7 8 | * 匹配任意多个字符 ls in *; rm -rf *; rm -rf *.pdf; find / -iname "*-eth0" ? 匹配任意一个字符 touch love loove live 7ve;ll | ?ve [] 匹配括号中任意一个字符 [abc][a-z][0-9][a-zA-Z0-9][^a-zA-Z0-9] () 在子shell中执行( cd /boot ; ls ) ( umask 077; touch file 1000) {} 集合 touch file {1..9} #mkdir /home/{111,222} ; mkdir /home/{333/{aaa,bbb},444} \ 转义符,让元字符回归本意 # echo \* |
变量
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 | 1.自定义变量 定义变量:变量名=变量值 变量名必须以字母或下划线开头,区分大小写 ip1=192.168.2.115 引用变量:$变量名 或 ${变量名} 查看变量: echo $变量名; set (所有变量:包括自定义变量和环境变量) 取消变量: unset 变量名 作用范围:仅在当前shell中有效 2.环境变量 定义环境变量:方法一 export back_dir2= /home/backup 方法二 export back_dir1 将自定义变量转换成环境变量 引用环境变量:$变量名 或 ${变量名} 查看环境变量: echo $变量名; env 例如 env | grep back_dir2 取消环境变量: unset 变量名 变量作用范围:在当前shell和子shell有效 3.位置变量 $1 $2 $3 $4 $5 $6 $7 $8 $9 ${10} 4.预定义变量 $0 脚本名 $* 所有参数 $@ 所有参数 # 没有被双引号包含时,$*和$@作用一样,但被双引号包含时,$@无区别,$*会将所有参数看作一个整体 $ # 参数个数 $$ 当前进程的PID $! 上一个后台进程的PID $? 上一个命令的返回值 0表示成功 5.变量的赋值方式 1.显示赋值 变量名=变量值 示例: IP1=192.168.1.251 today=` date +%F` 2. read 从键盘读入变量值 read 变量名 read -p "提示信息:" 变量名 注意事项 "" 弱引用 '' 强引用 `` 等价于 $() touch ` date +%F`_file.txt touch $( date +%F)_file.txt disk_free3=$( df -Ph | grep '/$' | awk '{print $4}' ) disk_free3=` df -Ph | grep '/$' | awk '{print $4}' ` 6.变量的运算 1.整数运算 expr expr 1+2 $(()) echo $((num1+num2)) echo $((1+2)) $[] echo $[5+2] let let sum =2+3; echo $ sum ; let i++; echo $i; 2.小数运算 echo "2*4" | bc echo "scale=2,6/4" | bc awk 'BEGIN{print 1/2}' 7.变量内容的删除和替换 删除 url=www.sina.com.cn echo ${ #url} 获取变量的长度 echo ${url} 标准查看 echo ${url #*.} 从前往后,最短匹配 ,sina.com.cn echo ${url ##*.} 从前往后,最长匹配,cn echo ${url%.*} 从后往前,最短匹配 www.sina.com echo ${url%%.*} 从后往前,最长匹配 www 索引及切片 echo ${url:0:5} www.s echo ${url:5:5} 根据索引下标截取 echo ${url:5} 替换 echo ${url /sina/baidu } www.baidu.com.cn echo ${url /n/N } www.siNa.com.cn echo ${url //n/N } www.siNa.com.cN 贪婪匹配 替代 echo ${var1-aaaa} ${变量名-新的变量值} 变量没有被赋值:会使用新的变量值替代;变量有被赋值(包括空值):不会被替代 ${变量名:-新的变量值} 变量没有被赋值(包括空值):都会使用新的变量值替代;变量有被赋值:不会被替代 ${var3+aaa} ${var3:+aaa} ${var3=aaa} ${var3:=aaa} ${var3?aaa} ${var3:?aaa} |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南