Lihb +

BashShell笔记

简单记录本人学习Linux shell编程的知识点。

1.普通变量

age= "34"
name= "david"
echo "my name is $name and I'm $age years old!"

输出结果为:

my name is david and I'm 34 years old! 

注意:变量名和”=“号之间不能有空格

2.输入参数相关

if [ $# == 0 ]
then
    echo "$0 paras error!!"
else
   echo "the first var is $1"
   for var in $@
     do
    ┊   echo "current var is $var"
    done
fi

输出结果为:

lhb@lhb-PC ~ $ ./ShellDemo.sh adc de seewr
the first var is adc
current var is adc
current var is de
current var is seewr

3.if语句

在shell中,0表示真,1表示假。我们可以通过echo $?命令查看,上次命令的返回值是真或假。

lhb@lhb-PC /media/lhb/e/testDir $ ls
a.txt  b.txt  c.txt
lhb@lhb-PC /media/lhb/e/testDir $ echo $?
0
lhb@lhb-PC /media/lhb/e/testDir $ [ 5 -lt 6 ]  # 判断5<6
lhb@lhb-PC /media/lhb/e/testDir $ echo $?
0
lhb@lhb-PC /media/lhb/e/testDir $ [ 5 -gt 6 ]  # 判断5>6
lhb@lhb-PC /media/lhb/e/testDir $ echo $?
1

if语句的语法格式:

if condition1 ;then
    xxxx
elif condition2;then
    xxxx
else
    xxxx
fi

示例:

if [ $1 -gt $2 ];then
   echo $1
else
   echo $2
fi

结果:

lhb@lhb-PC ~ $ ./ShellDemo.sh 12 46
46
lhb@lhb-PC ~ $ ./ShellDemo.sh 34 23
34

4.shell中的比较运算

字符串的比较

比较字符串的运算符主要有:

ps: 如果两个字符串长度不同时,系统会先为较短的字符串后添加空格使得两者长度相同,而后完成比较。

数字的比较
针对文件的运算符
逻辑运算符

5.shell中将命令执行的结果作为输入

语法:** `命令` **

示例:

for file in `ls`
do
if [ -x $file ];then
    echo "$file is a execution file."
elif [ -f $file ];then
    echo "$file is a normal file."
else
    echo "other..."
fi
done

结果:

lhb@lhb-PC ~/testDir $ ls
a.txt  b.txt  c.txt  ShellDemo.sh
lhb@lhb-PC ~/testDir $ ./ShellDemo.sh
a.txt is a normal file.
b.txt is a normal file.
c.txt is a normal file.
ShellDemo.sh is a execution file.

6.read读取控制台数据给参数赋值

示例

lhb@lhb-PC ~ $ read pi
3.1415926  # 这是从控制台输入的。
lhb@lhb-PC ~ $ echo "the pi is $pi"
the pi is 3.1415926

7.重定向输入输出

0 : 标准输入 1 : 标准输出 2 : 标准错误输出

lhb@lhb-PC ~/testDir $ >1.txt   # 若有该文件,则清空文件内容,若没有,则生成新
文件
lhb@lhb-PC ~/testDir $ ls >1.txt  # 将ls的内容重定向到1.txt文件中
lhb@lhb-PC ~/testDir $ ls >>1.txt # 将ls的内容追加到1.txt文件中
lhb@lhb-PC ~/testDir $ ls dddfsfstr >a.txt # 命令失败,1.txt中不会打印出错误
信息
lhb@lhb-PC ~/testDir $ ls dddfsfstr 2>a.txt # 命令执行成功,错误信息会打印到
a.txt中
lhb@lhb-PC ~/testDir $ read A <a.txt #将a.txt中内容保存为变量A
lhb@lhb-PC ~/testDir $ echo $A
lhb@lhb-PC ~/testDir $ ls dddfsfstr >a.txt 2>&1 #将标准错误输出2,重定向到1中

其他语法知识点

点击查看评论

Blog

Knowledge

Project