Bash编程语法

本文介绍了Bash编程的基础,包括变量定义与类型、控制语句(if、for、while)、read命令、脚本参数传递、算术运算以及Bash脚本与Linux命令的结合使用。详细讲解了每个概念,并通过示例进行演示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、变量

命名规则:只能使用英文字符、数字和下划线,首个字符不能以数字开头

                  不能使用bash里的关键字(可以用help命令查看保留关键字)

定义变量:a_name="name"

打印变量:echo $a_name

只读变量:

  a="123"

  readonly a

  a就变为了只读变量,不能更改,也不能被删除,变量的作用域是在当前窗口,把当前窗口关闭后,变量就自动释放了

删除变量:unset a

变量基本类型

字符串:a_name="your_name"

拼接字符串:greeting="hello,"$a_name"!"   --我尝试在本地不能直接运行,见下图

  这个拼接字符串在不同的环境效果不一样,如下图

https://blog.youkuaiyun.com/lanchunhui/article/details/51697479?utm_medium=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-1.control&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-1.control

数组:my_array=(v1 v2 v3 v4)

  获取数组的值:value1=${my_array[0]}

  单独赋值:my_array[0]=1

见下图操作,第一次写错了很多,bash脚本看起来语法挺多的

在数组中照下图写入*和@符号,可以打印数组的所有值:

二、控制语句

if 条件分支:

语法:

if condition;

then

  command 1;

  command 2;

  ...

  command n;

fi;

eg: if [ $a -eq $b ]; then echo "equal"; elif [ $a -lt $b ]; then echo "small"; elif [ $a -gt $b ]; then echo "big"; fi

最开始的时候这么写,不能达到预期的输出结果,其原因是1==2这个条件,等号两边要加空格,这语法很容易出错

改成如下的则能正常运行了

另外,如果是判断大于或者小于,条件语句应该写为 if [[ 1 < 2 ]],增加一对中括号,如果将<符号换为-lt则不用增加中括号

-eq 等于,-lt 小于,-gt 大于

 

for 循环语句:

语法:

for var in item1 item2 ... itemn;

do

  command 1;

  command 2;

  ...

  command n;

done;

简单演示:

循环读取文件内容并输出:

从截图可以看出cat命令输出是以空格进行分行的,loop文件内容实际为a b c d,但循环读取出来编程了竖着显示

while循环语句:

语法:

while condition;

do

  command 1;

  command 2;

  ...

  command n;

done;

循环读取文件并输出:

可以看到读取loop文件,a和b之间并没有换行

三、read命令

read命令是从终端或者文件中读取输入的内部命令,读取整行输入,每行末尾的换行符不被读入

1、从标准输入读取输入并赋值为变量

read var

2、从标准输入读取多个内容给多个变量

read var1 var2

3、不指定变量,默认赋值给REPLY

四、脚本参数传递

我们可以将bash命令写入到一个sh文件中,称为脚本文件,可以给sh文件进行参数传递:在执行sh文件命令后增加空格,再加上特殊的参数,那么就可以传参给sh文件

$0 脚本名称

$1-$n 获取参数

$# 传递到脚本的参数个数

$$ 脚本运行的当前进程ID号

$* 以一个单字符串显示所有向脚本传递的参数

$? 显示最后命令的退出状态,0表示没有错误,其他任何值表名有错误

运行结果:

 

五、算术运算

a=10 b=20

+ `expr $a + $b`

-  `expr $a - $b`

*  `expr $a \* $b`

/  `expr $b / $a`

% `expr $a % $b`

= 赋值,a=$b,将变量b的值赋给a

==  相等,作为判断条件,等号两边要有空格

!=  不等于,作为判断条件

-eq 判断是否相等

-ne 判断是否不相等

-gt 判断是否大于

-lt 判断是否小于

-ge 判断是否大于等于

-le 判断是否小于等于

 

六、bash脚本与Linux命令结合

1、创建目录并生成文件

mkdir test

cd test

echo "hello">test.txt

ls

 

2、统计内存使用

for i in `ps aux | awk '{print $6}' | grep -v 'RSS'`;

do count=$[$count+$i];

done;

echo "$count/kb";

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值