shell

函数

格式

函数格式一:
function 函数名 {
  命令序列
}

函数格式二:
函数名() {
  命令序列
}

调用函数格式一:直接调用
函数名
调用函数格式一:赋值再输出
result=`函数名`
echo "想要输出的结果"

返回值

  • return表示退出函数并返回一个退出值,脚本中可以用 $ ? 变量显示该值
    在这里插入图片描述

传参

#!/bin/bash
sum() {
s=$[$1 + $2]
echo $s
}
read -p "请输入第一个参数:" first
read -p "请输入第二个参数:" second
sum $first $second

变量作用范围

在这里插入图片描述

![[Shell学习库2.png|300]]

单引号与双引号

(1)单引号不取变量值

(2)双引号取变量值

(3)反引号,执行引号中命令

(4)双引号内部嵌套单引号,取出变量值

(5)单引号内部嵌套双引号,不取出变量值

IF

常见逻辑运算符

-f	 	判断文件是否存在 eg: if [ -f filename ]-d	 	判断目录是否存在 eg: if [ -d dir     ]-eq		等于,应用于整型比较 equal;
-ne		不等于,应用于整型比较 not equal;
-lt		小于,应用于整型比较 letter;
-gt		大于,应用于整型比较 greater;
-le		小于或等于,应用于整型比较;
-ge 	大于或等于,应用于整型比较;
-a		双方都成立(and) 逻辑表达式 –a 逻辑表达式;
-o		单方成立(or) 逻辑表达式 –o 逻辑表达式;
-z		空字符串;
-x      是否具有可执行权限
||      单方成立;
&&      双方都成立表达式。

For 循环

默认循环列表使用空格划分
使用 IFS 来指定循环列表的分割符

IFS=, 
for item in value1,value2,value3 
do 
echo $item 
done

案例

案例一:从其中一个文件读取内容,然后复制另一个文件到新文件,根据读取的内容修改新文件的内容
#!/bin/bash 
while IFS= read -r line; 
do
if [[ ! $line == "20."* ]]; then 
	mkdir "${line}" 
else 
	cp 1.json "${line}.json" 
	sed -i "s/host/${line}/g" "${line}.json" 
fi
done < 2.txt
案例二:获取Yarn单个任务的容器数量
#!/bin/bash 
app_id=$(yarn app -list | egrep "${job_name}_[0-9]{4}-[0-9]{2}-[0-9]{2}" | awk '{print $1}')
attempt_id=$(yarn applicationattempt -list ${app_id} | tail -n 1 | awk '{print $1}')
core_size=$(yarn container -list ${attempt_id} |grep "number" |cut -d ":" -f 2)

EOF

[root@node1 ~]# cat >> /etc/hosts << EOF
192.168.1.11 node1
192.168.1.12 node2
192.168.1.13 node3
EOF

[root@node1 ~]# for i in {12..13}
do
scp /etc/hosts 192.168.1.$i:/etc/hosts
done

Sed

  • 在行首添加注释 sed 's/^/#/g ' 文件
  • 替换多个内容 sed 's/a/b/g ; s/c/d/g' 文件
  • 删除多行 sed -i -e 'n1d ; n2d' 文件
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值