bash编程:
bash进程:解释器
type shell脚本:
第一行,顶格:
shebang
#!/bin/bash
#!/usr/bin/python 其它的以#开头的行均为注释,会被解释器忽略; 练习:
创建一个组newgroup,id号8008;
创建一个用户,名字为mageedu, id号为3306,附加组为newgroup
创建目录/tmp/hellobash
复制/etc/rc.d/init.d/functions至/tmp/hellobash目录中 过程式编程语言:
顺序执行
选择执行:测试条件,可能会多个测试条件,某条件满足时,则执行对应的分支
循环执行:将同一段代码反复执行多次;因此,循环必须有退出条件;否则,则陷入死循环; bash
-n: 语法测试
-x: 模拟单步执行 变量类别:
本地变量
环境变量
export:导出
局部变量
位置变量
$1, ..., $n, ${10}
练习:写一个脚本,能接受一个参数作为用户名,此脚本可创建此用户,并且其密码同用户名;
shift [n]
特殊变量:
$?
$#: 传递给脚本参数的个数
$*
$@:引用传递给脚本的所有参数 bash的循环语句:
for:遍历有限的元素列表,
while:
until: for语句的格式:
for VAR_NAME in LIST
do
循环体
done LIST:列表,中间包括一个或多个元素 退出条件:遍历结束 练习:创建10个用户,user301, user310
列表:user301, user310
列表:301, 310 生成数值列表:
{start..end}
例如:{1..100}
seq
命令引用 for userNo in {301..310}
for userNo in $(seq 301 310); do
useradd user${userNo}
done 练习:创建目录/tmp/dir-当前日期时间;例如/tmp/dir-20140707-155503
在此目录中创建10个空文件,分别为file1-file10; 练习:写一个脚本
1、创建用户tuser1-tuser9;
2、创建目录/tmp/dir-当前日期时间;
3、在/tmp/dir-当前日期时间 目录中创建9个空文件file101-file109
4、将file101的属主改为tuser1,依次类推,一直将file109的属主改为tuser9; 练习:写一个脚本
1、脚本可以接受一个以上的文件路径作为参数;
2、显示每个文件所拥的行数; 3、显示本次共对多少个文件执行了行数统计;
!/bin/bash
#
for file in $*; do
lines=`wc -l $file | cut -d' ' -f1`
echo "$file has $lines lines."
done echo "$# files." 练习:写一个脚本
1、显示/etc/passwd文件中位于文件的第偶数行的用户名;并显示共有多少个这样的用户;
#!/bin/bash
#
totalUsers=`wc -l /etc/passwd | cut -d' ' -f1` for i in `seq 2 2 $totalUsers`; do
userName=`head -n $i /etc/passwd | tail -1 | cut -d: -f1`
echo $userName >> /tmp/passwd.tmp
echo $userName
done users=`wc -l /tmp/passwd.tmp | cut -d' ' -f1`
echo "Total users: $users." 生成列表的方式:
1、手动给个列表:
for i in 1 2 3 4 5;
2、数值列表:
{start..end}
`seq [start [increment]] end`
3、$*, $@
4、命令生成列表 bash如何实现算术运算:
变量:弱类型 如何定义整型变量:
let VAR_NAME=INTEGER_VALUE
例如:let a=3 declare -i VAR_NAME=INTEGER_VALUE
例如:declare -i a=3 注意:即使没有定义为整型变量,字符型的数字依然可以参与算术运算;bash会执行变量类型的隐式类型转换; 实现算术运算的方式:
let VAR_NAME=ARITHMATIC_EXPRESSION
VAR_NAME=$[ARITHMATIC_EXRESSION]
VAR_NAME=$((EXPRESSION))
VAR_NAME=$(expr $num1 + $num2) 算术运算符:
+
-
*
/
%:取模,取余数
5%2=1,
**: 2**2 练习:计算100以内所有正整数之和
#!/bin/bash
#
declare -i sum=0 for i in {1..100}; do
sum=$[$sum+$i]
done echo $sum 练习:分别计算100以内所有偶数之和和奇数之和;
#!/bin/bash
#
declare -i evensum=0
declare -i oddsum=0 for i in `seq 1 2 100`; do
oddsum=$[
redhat linux之bash 编程
发布时间:2024-12-09 19:54
学习Linux命令行:'The Linux Command Line' 是经典教材 #生活技巧# #工作学习技巧# #编程学习资源#
最新推荐文章于 2024-06-02 15:06:08 发布
刘东义的博客 于 2019-01-21 12:18:07 发布
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
网址:redhat linux之bash 编程 https://www.yuejiaxmz.com/news/view/427804
相关内容
在Linux中,如何通过bash shell自动化日常任务Linux技巧
【Linux自动化任务构建】
Linux基础之查看、添加、修改、删除用户
利用开源软件搭建JAVA工程CI&CD自动化工具链(K8S)
Linux自动化任务
100个日常实用脚本
Linux网络编程
linux怎么快速删除大量文件,比rm快的方法来了
如何在Linux上自动化任务