Linux Command Line and....ch11(构建基本脚本)

来源:互联网 发布:名字抽奖软件 编辑:程序博客网 时间:2024/05/16 08:09

本章内容:

  • 使用多个命令
  • 创建脚本文件
  • 显示消息
  • 使用变量
  • 输入输出重定向
  • 管道
  • 数学运算
  • 退出脚本

11.1 使用多个命令

shell脚本的关键在于输入多个命令并处理每个命令的结果,甚至需要将一个命令的结果传给另一个命令。如果要两个命令一起运行,可以把它们放在同一行中,彼此用分号隔开。

date ; who
2017年 06月 23日 星期五 09:59:02 CST
*** tty7 2017-06-04 11:34 (:0)


11.2 创建shell脚本文件

在创建shell脚本文件时,必须在文件的第一行指定要使用的shell。其格式为:

#!/bin/bash

在通常的shell脚本中,#可以用来注释行,除了以“#!”开头的第一行

完成脚本test1并保存后(我使用的是gedit),在shell中输入脚本名称,发现提示找不到命令。这是因为PATH中没有test1所在的路径。有两种方法解决问题:
1.将shell脚本文件所在的目录添加到PATH环境中
2.使用绝对路径或相对文件路径来引用shell脚本文件

第二种方法:
绝对路径(指从根目录开始)l@l-virtual-machine:~$ /home/l/script/test1

相对路径(当前目录 .) l@l-virtual-machine:~/script$ ./test1

中途还发生test1脚本的权限问题,因为test1脚本是在root用户下创建的,而我使用自己的账户在执行。所以要用chmod命令改变权限


11.3 显示消息

echo命令的功能是在显示器上显示一段文字,一般起到一个提示的作用。
该命令的一般格式为: echo [ -参数 ] 字符串
参数:-n 不要在最后自动换行
※ echo $PATH 可以显示环境变量

可以将echo语句加到shell脚本中任何需要显示额外信息的地方。

用echo正常输出引号的方法:
$ echo ‘Rich says “scripting is easy”.’
Rich says “scripting is easy”.


11.4 使用变量

变量允许你临时性地将信息存储在shell脚本中。

===
11.4.1 环境变量
可以用 set命令来显示一份完整的当前环境变量列表。

在脚本中,你可以在环境变量名称之前加上美元符号($)来使用这些环境变量。
echo UID: $UID

===
11.4.2 用户变量

用户变量区分大小写,所以变量Var1和变量var1是不同的。

#!/bin/bash
# assigning a variable value to another variable
value1=10
value2=$value1
echo The resulting value is $value2

输出结果是10

若 value2=value1,则输出value1

所以引用一个变量的值来给另一个变量赋值,也需要加上$符号

===
11.4.3 命令替换

从命令输出中提取信息,并将其赋给变量。

两种方式:

  1. 反引号字符
  2. $()格式
#!/bin/bash#this script is used for display the date and the userdatetesting=$(who)echo the user is $testing

输出:
2017年 06月 23日 星期五 11:14:43 CST
the user is l tty7 2017-06-04 11:34 (:0)

等号两端不能加空格!!!


11.5 重定向输入和输出
可以将命令的输出重定向到另一个位置(比如文件)。

11.5.1 输出重定向

bash shell用大于号(>)来完成这项功能: command > outputfile
之前显示器上出现的命令输出会被保存到指定的输出文件中。
$ date > test6

双大于号(>>)用于在原文件追加数据

===
11.5.2 输入重定向

输入重定向是小于号(<): command < inputfile

$ wc < test6
2 11 60
wc(words count?)命令会输出3个值:行数、词数、字节数

<< 这个连续两个小于的符号。 他代表的是『结束的输入字符』的意思!举例来讲:『我要用 cat 直接将输入的信息输出到 catfile 中, 且当由键盘输入 EOF 时,该次输入就结束』,那我可以这样做:
$ catfile << EOF


11.6 管道

command1 | command2

将command1的输出直接送到command2中


11.7 执行数学运算

在Bash shell环境中,可以利用 let、 (()) 、 [ ]、 expr 、 bc 进行数学运算

#! /bin/bash  echo "数学运算篇 START"  #基本运算----let  a=5;  b=4;  echo "a = $a , b = $b"  let c=a+b;  echo "a + b =  $c"  let a++  echo "a++ = $a"  let b--  echo "b-- = $b"  let b+=a  echo "b+=a: b = $b"  #基本运算----[]  echo "a = $a, b = $b"  c=$[a+b]  echo "\$[a+b] = $c"  c=$[$a+$b]  echo "\$[\$a+\$b] = $c"  #基本运算----(())  c=$((a+b))  echo "\$((a+b))=$c"  #基本运算----expr  c=`expr 3 + 4` #注意+两侧的空格  echo "$c"  c=`expr $a + $b`  echo "$c"  #高级运算----bc  #1.计算浮点  echo "4 * 0.56" | bc  a=5.5  b=3.5  c=`echo "$a * $b" | bc`  echo "$a * $b = $c"  #2.设定小数精度  c=`echo "scale=3; $a * $b" | bc`  echo "scale=3; $a * $b = $c"  #3.进制转换  d=`echo "obase=2; $c" | bc`  echo "obase=2; $c = $d"  #4.高级函数  a=`echo "sqrt(100)" | bc`  echo "sqrt(100) = $a"  b=`echo "3^3" | bc`  echo "3^3 = $b"  echo "数学运算篇 END"  
数学运算篇 START  a = 5 , b = 4  a + b =  9  a++ = 6  b-- = 3  b+=a: b = 9  a = 6, b = 9  $[a+b] = 15  $[$a+$b] = 15  $((a+b))=15  7  15  2.24  5.5 * 3.5 = 19.2  scale=3; 5.5 * 3.5 = 19.25  obase=2; 19.25 = 10011.0100000  sqrt(100) = 10  3^3 = 27  数学运算篇 END  

11.7.3 浮点解决方案
var1=$(echo “scale=4; 3.44 / 5” | bc)


11.8 退出脚本

11.8.1 查看退出状态码

echo $?

这里写图片描述

===
11.8.2 exit命令

在脚本文件的最后写上 exit 5,则自定义了结束状态码5

阅读全文
0 0
原创粉丝点击