bash编程笔记

bash编程笔记

使用bash的shell编程之前,需要熟练使用linux的bash命令。如果还不太熟悉,建议多使用使用linux之后,再来看看这篇文章。

基本变量

普通变量

bash的所有的变量为无类型变量,例如下面的赋值语句都可:

var1=haha
var2=123
var3=haha123

字符数组

bash的数组赋值语句如下,调用使用[n]指定元素即可,获取所有元素为[@],获取元素的个数为${#list[@]},例句如下:

list=(aa bb cc dd)
echo ${list[1]}  # print string 'bb'
echo ${list[@]}  # print string 'aa bb cc dd'
echo ${#list[@]} # print 4

获取参数及程序运行完成后的状态

bash脚本程序的参数列表使用$加数字形式来获取,例如运行program.sh脚本:

program.sh a b c d

获得第一个参数为$1获得数值为a,$0为program.sh,获得所有参数列表为$@,获得所有参数的个数为$#,例如编写如下bash脚本:

#! /bin/bash

echo arguments list is: $@ # print string 'a b c d'
echo number of arguments is: $#  # print 4
echo value of second arguments is: $1  # print a

获取一个上一个shell里面的程序完成的状态变量为: $?

获取当前shell的进程号

echo $$

字符拼接

获得变量的数值时,方法为$后跟上变量名,也可以${变量名},后一种情况用于容易引起歧义的地方。字符串常用"“或者’'装起来。但双引号和单引号有点区别,”"双引号加入变量会扩充,‘’单引号则不会,例如如下代码:

value=wahaha
echo "haha $value"    # print string 'haha wahaha'
echo "haha ${value}"  # print string 'haha wahaha'
echo 'haha $value'    # print string 'haha $value'

读取控制台输入与输出

获得一个命令的结果,并将结果作为字符串变量的方法为,`命令`或者 $(命令)。注意,这里的``为反引号。例如当前目录下面的文件为aa,bb,cc三个文件,有下面的示例:

res1=`ls`
res2=$(ls)
echo $res1   # print 'aa bb cc'
echo $res2   # print 'aa bb cc'

获得程序运行时用户的控制台输入为:

read -p "input your content: " value
# then if you input a string 'haha'
echo $value  # print haha

条件判断与常用比较

条件语句:

if [ expression ] ; then
	echo one
elif [ expression ] ; then
	echo two
else
	echo three
fi

bash常用比较为[ compare_commands ]或者[[ compare_commands ]]。注意,一个中括号时,括号内部两边必须要有空格,两个中括号没有要求。

常用比较语句:

文件操作
[ -e file ]如果file存在时为真
[ -f file ]如果file是普通文件时为真
[ -d file ]如果file是目录时为真
[ -x file ]如果file存在且可执行时为真
字符串操作(一般使用双引号包含起来字符串,不然变量有空格时会出意想不到的错误)
[ -z string ]string是否为空
[ -n string ]string是否为非空
[ string1 == string2 ]相同
[ string1 != string2 ]不同
[ string1 < string2 ]小于
[ string1 > string2 ]大于
数值判断
[ int1 -eq int2 ]相等
[ int1 -ne int2 ]不等
[ int1 -gt int2 ]大于
[ int1 -ge int2 ]大于等于
[ int1 -lt int2 ]小于
[ int1 -le int2 ]小于等于
逻辑判断
[ ! expression ]
[ expression1 -a expression2 ]
[ expression1 -o expression2 ]
[ exporession1 ] && [ expression2 ]
[ exporession1 ] || [ expression2 ]

双圆括号(( )):表示数学表达式
在判断命令中只允许在比较中进行简单的算术操作,而双圆括号提供更多的数学符号,而且在双圆括号里面的’>’,’<'号不需要转意。

双方括号[[ expression ]]:表示高级字符串处理函数
双方括号中判断命令使用标准的字符串比较,还可以使用匹配模式,从而定义与字符串相匹配的正则表达式。注意使用正则表达式时==左右需要空格

循环

c语言风格for循环

for ((i=1; i<=100; i++))
do
    ans=$(( $ans + 1 ))
done

for in遍历元素

for file in `ls ./`
do
    echo $file
done

基本数学计算

使用$(( $value1 op $value2 ))得到数学计算结果,注意使用的是整数操作。

i=1
i=$(( $i + 1 ))
echo $i   # print 2
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值