Linux
常用
管理语句
Shell命令(变量)
正则表达式
重定向
EXPECT
流程控制
函数
日志
SED
sed常用操作
sed组合命令
sed脚本
AWK
awk常用
awk流程控制
awk脚本
SSH
SSH密钥的批量分发与执行
SSH连接很慢
ACL文件访问控制
计划任务
常用语句
批量添加用户和密码
批量修改密码
临时和永久关闭Selinux
修改主机名
Linux内核参数
无人值守安装
ISO镜像(mondorescue)
软件管理
SYSTEM服务
YUM本地仓
存储管理
逻辑卷LVM
磁盘阵列RAID
备份恢复相关命令
fio磁盘性能测试
内存管理
IPTABLES防火墙
FIREWALLD防火墙
curl请求
Linux问题
漏洞修复
限制网卡带宽
CentosYUM源
rsyslog 占用内存过高
df -h 卡住解决
Linux故障问题
网络配置
升级内核
Openssl生成证书
CENTOS6升级7
本文档使用MrDoc发布
返回首页
-
+
Shell命令(变量)
2020年5月4日 09:36
admin
#命令序列 ; #将多个命令组合,但没有逻辑关系,仅按顺序执行 & #后台运行 && #将多个命令组合,仅成功才会执行后面命令 || #将多个命令组合,仅失败才会执行后面命令 ------------------------------------------------------------ [ -d test.txt ] && echo Y || echo N --- #注释 # #单行注释 --- #变量 >####定义变量 name=[value] #注意,变量名和等号之间不能有空格,如果value有空格,需用""括起来 ------------------------------------------------------------- test1=hello test2="hello boy" --- >####声明变量 declare name --- >####限定变量 typeset -r name #限定变量name为只读变量,只读变量的值不能被改变。 typeset -i name #限定变量name为整数变量 ------------------------------------------------------------- onlyread name #限定变量name为只读变量,只读变量的值不能被改变。 onlyread -p #显示系统中全部只读变量列表。 --- >####输入变量 read -p [提示语] name --- >####使用变量 echo $your_name echo ${your_name} #注意:变量名外面的花括号是可选的,加不加都行 --- >####查看变量 set --- >####取消变量 unset name --- >####变量的使用范围 #注意:默认设置的变量仅在当前shell中有效 export name export name=value #将变量转为环境变量,这样新的进程会从父进程继承环境。 --- #位置变量 $0 #当前shell程序的文件名称 $1-${n} #第一个参数-第n个参数,不加{}最多只能到$9 $* #代表所有参数,视为一个整体 $@ #代表所有参数,视为个体 $$ #进程ID号 $? #退出代码(0:成功 非0:失败) --- #变量的扩展 ##变量值:{ } ${name} #使用变量的值 -------------------------------------------------------- ${name:-word} #如果name存在且非NULL,则返回其值,否则返回word ${name:=word} #如果name存在且非NULL,则返回其值,否则设置为work ${name:+word} #如果name存在且非NULL,则返回word,否则返回null ${name:?message} #如果name存在且非NULL,则返回其值,否则显示name:message -------------------------------------------------------- ####从头开始删除关键词,执行最短匹配 ${name#key} ####从头开始删除关键词,执行最长匹配 ${name##key} ####从尾开始删除关键词,执行最短匹配 ${name%key} ####从尾开始删除关键词,执行最长匹配 ${name%%key} ####将old替换为new,仅替换第一个出现的old ${name/key} 例子: string="hello,shell,split,test" echo ${string/,/ } 结果: hello shell,split,test ####将old替换为new,替换所有old ${name//oldkey/newkey} 例子: string="hello,shell,split,test" echo ${string//,/ } 结果: hello shell split test --- ##分隔符IFS ####IFS默认值为Tab\空格\换行符\n ####自定义分隔符IFS,对字符串进行切分 #!/bin/bash string="hello,shell,split,test" #对IFS变量 进行替换处理 OLD_IFS="$IFS" IFS="," array=($string) IFS="$OLD_IFS" for var in ${array[@]} do echo $var done ![](/media//202108/2021-08-0108454819321720180620203358805-1.png) --- ##数组变量:( ) 与 [ ] >####数组创建 方式一: A[0]=1 A[1]=2 ......(如此类推) 方式二: A=(1,2,3,4,5) A=({1..10}) #注意:数组序号从0开始 >####数组使用 ${A[0]} #数组A序号0的值 ${A[@]} #数组A所有的元素 ${#A[@]} #数组A所有的元素个数 >####数组切片 ${A[@|*|#]:start:length} -------------------------------------------------------- ${A[@]:2:4} #表示从序号为2的元素开始,截取4个元素 -------------------------------------------------------- ${A[1]:2:4} #表示对序号为1的元素的第2个位置开始,截取4个长度 >####数组元素替换 ${A[@|*|#]/old/new} -------------------------------------------------------- ${A[@]/a/b} #表示把数据A的a元素替换为b元素 -------------------------------------------------------- ${A[1]/a/b} #表示对序号为1的元素的a替换为b --- #字典 declare -A KEHU_RING_LIST KEHU_RING_LIST=(["深圳乐信控股有限公司"]="lexin_ring" ["深圳乐信控股有限公司AI"]="lexin_ai_ring" ["深圳乐信控股有限公司_还款通知"]="lexin_huankuang_ring") ${KEHU_RING_LIST["${KEHU}"]} --- >##算术运算 $((x+y)) #加法运算,$((1+2))=3 $((x-y)) #减法运算,$((3-1))=2 $((x/y)) #除法运算,$((4/2))=2 $((x*y)) #乘法运算,$((4*2))=8 $((x%y)) #取余运算,$((8%3))=2 $((x++)) #自加1运算,$((1++))=2 $((x--)) #自减1运算,$((2--))=1 $((x**y)) #幂运算,$((2**3))=8 -------------------------------------------------------- expr num1 + num2 #加法运算 expr num1 - num2 #减法运算 expr num1 / num2 #除法运算 expr num1 \* num2 #乘法运算 expr num1 % num2 #取余运算 --- >##判断测试 [ -d file ] #file是否存在且为目录 [ -e file ] #文件是否存在 [ -f file ] #文件是否存在,且为普通文件 [ -r file ] #文件是否存在且可读 [ -x file ] #文件是否存在且可执行 [ -s file ] #文件是否存在且非空 [ -h file ] #文件是否为链接文件 [ -n file ] #字符串长度非0 [ -z file ] #字符串长度为0 [ string1 = string2 ] #字符串相等 [ string1 != string2 ] #字符串不相等 [ num1 -eq num2 ] #整数1等于整数2 [ num1 -ne num2 ] #整数1不等于整数2 [ num1 -ge num2 ] #整数1大于等于整数2 [ num1 -gt num2 ] #整数1大于整数2 [ num1 -le num2 ] #整数1小于等于整数2 [ num1 -lt num2 ] #整数1小于整数2 -------------------------------------------------------- >####test方法同上,只需将[]换为test即可 [ -d test.txt ] && echo Y || echo N test -d test.txt && echo Y || echo N
分享到: