没有合适的资源?快使用搜索试试~ 我知道了~
Linux常用命令和管理08-shell之脚本编程条件判断及算术运算1
需积分: 0 0 下载量 90 浏览量
2022-08-08
21:57:10
上传
评论
收藏 22KB DOCX 举报
温馨提示
试读
2页
Linux常用命令和管理08-shell之脚本编程条件判断及算术运算1
资源详情
资源评论
资源推荐
Bash 弱类型
1. 变量=值
a) 任何变量无需事先声明,可直接使用;
b) 值默认都是字符型;
c) a=abc(加括号也可以,子串中间有空白字符必须加引号),b=3
d) 赋值:a=4(等号两端不可随意添加空格)
e) 增强型赋值机制:+=,-=,*=,/=,%=,(a=$[$a+1]相当于 let a+=1,export
PATH=$PATH;/usr/local/apache/bin)
f) 自加/减:++,--(++v,v++,--v,v--)
g) Unset:撤销变量
2. 算术运算:bash 会对数字执行隐式类型转换
a) let VAR_NAME=Integer_Value
b) declare –i Var_Name=Integer_Value
c) 操作符:+,-,*,/,%,**(次方)——双目操作符
3. Bash 算术运算的方式:
a) let Var_Name=EXPRESSION(let res=$na*$n2;echo $res),依赖于 let 命令,是一
个语句
b) bash 不支持浮点运算,所得结果近似为整数
c) Var_Name=$[EXPRESSION],不依赖于外部命令,是一个表达式,可用$[EXPRESSION]
直接引用结果,可以不用赋值
d) $((EXPRESSION))等价于$[EXPRESSION]
e) expr ARG1 OP AGR2(expr 是独立的命令,使用使要使用命令引用,必须加空格)
f) 显示子串且子串中无变量可用单双引号,子串中有变量如果要替换必须用双引号,
不想替换用单引号,引用的结果是一个命令要用反引号(‘1’左边的键)
g) 练习:创建 10 个用户:tuser601-tuser610
h) Bash 中的子串连接:变量引用后方直接跟子串时变量名要加花括号,例如
animal=pig; echo “${animal}s”
4. 练习:
a) 求 100 以内所有的整数和
b) 计算当前系统上的所有用户的 id 之和
c) 写一个脚本:
1) 脚本可以接受一个以上的文件路径作为参数;
2) 显示每个文件的行数;
3) 计算本次对多少个文件执行了行数统计;
4) 显示文件的总行数。
d) 新建 10 个用户:tuser401-tuser410,并求它们的 id 之和
e) 写一个脚本:
1) 创建用户 tuser501-tuser510;
2) 创建目录/tmp/dir-当前日期时间;
3) 在/tmp/dir-当前日期时间 目录中创建 10 个空文件夹 file101-file110;
4) 将 file101 的属主改为 tuser501,以此类推,一直将 file110 的属主改为
Commented [雪晴 1]: for i in `seq 601 610`; do
或 for i in {601..610}; do
useradd tuser$i;
done
Commented [雪晴 2]: declare -i sum=0
for i in {1..100}; do
let sum+=$i
done
echo "sum = $sum"
Commented [雪晴 3]: declare -i idsum=0
for i in `cut -d: -f3 /etc/passwd`; do
let idsum+=$i
done
echo $idsum
Commented [雪晴 4]: vim tmp.sh
#!/bin/bash
#
declare -i totalLines=0
declare -i noFiles=0
for file in $*(从命令行接受了一大堆参数); do
curFIleLines=`wc -l $file | cut -d '' -f1`
echo "$file has $curFIleLines lines."
let noFiles++
let totalLines+=$curFIleLines
done
echo "Total Files: $noFiles."
echo "Total Lines: $totalLines."
chmod +x tmp.sh
./tmp.bash FILE1 FILE2 ...
Commented [雪晴 5]: vim idsum.sh
#!/bin/bash
#
declare -i idsum=0
for i in {401..410}; do
useradd tuser$i
userID=`id -u tuser$i`
let idsum+=$userID
done
echo "ID sum: $idsum."
chmod +x idsum.sh
./idsum.sh
Commented [雪晴 6]: vim tmp.sh
#!/bin/bash
#
declare -i totalLines=0
declare -i noFiles=0
for file in $*(从命令行接受了一大堆参数); do
curFIleLines=`wc -l $file | cut -d '' -f1`
echo "$file has $curFIleLines lines."
let noFiles++
let totalLines+=$curFIleLines
咖啡碎冰冰
- 粉丝: 11
- 资源: 292
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0