Linux_Shell脚本学习第一章-小试牛刀

1. Shell脚本简介

简单的说,当命令或者程序不在命令行执行,而是通过一个程序文件来执行,这个程序就被称为shell脚本。
也就是在shell脚本里内置了多条命令,语句,循环控制,然后将这些命令一次性执行完毕。

2. 在终端中显示输出

2.1 shell脚本的编写及执行

以hello world脚本程序分析

#!/bin/bash

#only is a test shell
echo "hello world"

代码执行方式
a.将脚本名作为命令行参数

am335x@ubuntu:/work/project/linux_shell$ bash test.sh 
hello world

b.授予脚本执行权限,将其变为可执行文件:

am335x@ubuntu:/work/project/linux_shell$ chmod +x ./test.sh 
am335x@ubuntu:/work/project/linux_shell$ ./test.sh 
hello world

代码分析

1. shell脚本都会以#!/bin/bash为起始。/bin/bash是Bash的解释器命令路径。
2.注释部分以#为起始,一直延续到行尾。注释行通常用于描述代码或是在调试期间禁止执行某行代码。 

2.2 echo命令

echo是用于终端打印的最基本命令。默认情况下,echo在每次调用后会添加一个换行符:
使用echo命令的方式有三种
	1. echo "hello world"
	2. echo 'hello world'
	3. echo hello world

这些方法看起来相似,但各有特定的用途及副作用。双引号允许shell解释字符串中出现的特殊字符。单引号不会对其做任何解释。例如:
echo hello; hello;
bash会将echo hello当作一个命令,将hello当作另一个命令,因为分号在Bash shell中用作命令间的分
隔符。

3. 使用变量

#!/bin/bash

#only is a test shell

fruit=appel
count=5

echo "We have $count ${fruit}s"
1. 可以使用等号操作符为变量赋值: varName=value
    注意:var = value不同于var=value。把var=value写成var = value是一个常见的错误。
    两边没有空格的等号是赋值操作符,加上空格的等号表示的是等量关系测试。
2. 在变量名之前加上美元符号($)就可以访问变量的内容。
    注意: 使用单引号时,变量不会被扩展(expand),仍依照原样显示。这意味着$ echo'$var'会显示$var。
4. 因为shell使用空白字符来分隔单词,所以我们需要加上一对花括号来告诉shell这里的变量名是fruit,而不是fruits。

4.数学运算

4.1 数学运算时不能直接相加

#!/bin/bash

#only is a test shell

no1=5
no2=6

result=$no1+$no2
echo $result
am335x@ubuntu:/work/project/linux_shell$ ./test.sh 
5+6

4.2 let命令

#!/bin/bash

#only is a test shell

no1=5
no2=6

let result=no1+no2
echo $result
a.let命令可以直接执行基本的算术操作。当使用let时,变量名之前不需要再添加$
	let result=no1+no2
b.let命令的其他用法如下:
	自加操作:  let no1++
	自减操作:  let no1--
	简写形式:  let no+=6  let no-=6
c.只支持整数运算

4.3 []操作符

#!/bin/bash

#only is a test shell

no1=5
no2=6

result=$[no1+no2]
echo $result
a.操作符[]的使用方法和let命令一样,但是需要在[]外加上$:
	result=$[ no1 + no2 ]
b.在[]中也可以使用$前缀,例如:
    result=$[ $no1 + 6 ]
c.只支持整数运算

4.4 ( ( ) )操作符

a.与[]操作符一样,出现在(())中的变量名之前需要加上$:
	result=$(( no1 + 50 ))
b. 只支持整数运算

4.5 bc工具

#!/bin/bash

#only is a test shell

echo "4*0.56" | bc
no=54
result=`echo "$no * 1.5" | bc`
echo $result
a. 执行脚本效果如下
	am335x@ubuntu:/work/project/linux_shell$ ./test.sh 
	2.24
	81.0
b. ``操作符将echo输出的值赋值给result
c. bc工具支持浮点运算
d.设定小数精度。
   在下例中参数scale=2将小数位个数设置为2。因此,bc将会输出包含个小数位的数值:
   echo "scale=2;22/7" | bc
   3.14
e. 进制转换。用bc可以将一种进制系统转换为另一种。
	#!/bin/bash
	#用途:数字转换
	no=100
	echo "obase=2;$no" | bc
	1100100
	no=1100100
	echo "obase=10;ibase=2;$no" | bc
	100
f.计算平方及平方根
	echo "sqrt(100)" | bc
	10
	echo "5^2" | bc
	25

5.文件描述符与重定向

5.1 文件描述符操作

a. 文件描述符是与某个打开的文件或数据流相关联的整数。
   文件描述符0、1以及2是系统预留的。
    0 —— stdin (标准输入)。
    1 —— stdout(标准输出)。
    2 —— stderr(标准错误)。
    
  b.使用大于号将文本保存到文件中:

$ echo “This is a sample text 1” > temp.txt

  该命令会将输出的文本保存在temp.txt中。如果temp.txt已经存在,大于号会清空该文件中
  先前的内容。

猜你喜欢

转载自blog.csdn.net/qq_36521904/article/details/89485851