Shell脚本基础学习(二)----脚本基础命令、变量以及规则

来源:互联网 发布:java数组的冒泡排序法 编辑:程序博客网 时间:2024/06/08 13:36

知道了如何写最简单的脚本,然后就需要知道可以使用哪些命令、变量等等一系列规则来写稍微复杂的脚本。

以前一直觉得看脚本写脚本真是一件很复杂和麻烦的事情,只有使用别人提供好的脚本的时候才是最爽的时候。

现在觉得真是肤浅啊!

有时候需要在命令行输入多次命令,真是苦力活,但是会写脚本就不一样了,哪怕只是会写最简单的脚本。因为心里有了写脚本的意识,就会在做简单而又重复的事情的时候会想到,是否可以写个脚本然后在命令行运行一下脚本就可以了呢~


1.echo:这个命令很简单,就是显示消息、变量等。
但是如果要显示的消息中包含该了"或是',则会有一点点小小的意外发生。
如显示what's your name?
在脚本中:echo what's your name?
然后运行:
mengqin.zhang@U-mengqin-zhang:~/Documents$ ./testsh 
./testsh: line 5: unexpected EOF while looking for matching `''
./testsh: line 6: syntax error: unexpected end of file
what's your name?使用" "后:echo "what's your name?"
再次运行:
mengqin.zhang@U-mengqin-zhang:~/Documents$ ./testsh 
what's your name?
如果当前要显示的消息中含有" ,则使用 ' '来把字符串引起来,若果含有',则使用" "把字符串引起来。
使用-n参数可以在同一行显示消息,如:
echo -n "what's your name?"
echo my name is jane
mengqin.zhang@U-mengqin-zhang:~/Documents$ ./testsh 
what's your name?my name is jane

2.变量
(1)环境变量
使用printenv来查看全部全局环境变量。
使用set命令查看所有环境变量,包括全局和局部。
要获得环境变量很简单,如:$PATH,$HOME等。
使用 $变量名 即可得到变量的值。如获取环境变量的值并显示出来:echo $PATH
但是我们我们需要在信息中显示$,则需要使用转义字符 \ 。
(2)用户变量
自己定义用户变量,区分大小写,名字不超过20个字母数字下划线。
赋值的时候变量、等号、值之间不要有空格,如var=2
也是通过$来引用用户变量$var

3.反引号
反引号:·,反引号可以将shell命令的输出赋给变量,如:
var=`date`
echo The date :$var
mengqin.zhang@U-mengqin-zhang:~/Documents$ ./testsh 
The date :Wed Jun 1 15:37:47 CST 2016

4.重定向输入和输出
重定向输出:大于号 >
如adb logcat > log.txt
当不存在log.txt时则默认创建一个。如果存在,则新的数据会覆盖已有文件中的数据。
追加数据:>>
重定向输入:小于号 <
如wc < log.txt
内联输入重定向:<<
如:
mengqin.zhang@U-mengqin-zhang:~/Documents$ wc << EFO
> my name is jane
> I love shell
> I love linux
> Amazing
> EFO
 4 11 50
其中EFO可以自己定义指定的字符作为输入数据的开始和结尾。
重定向符号总是指向数据流动的方向。

5.管道
使用重定向有时候不免麻烦,如需要把一个命令的输出作为另一个命令的输入,这时候就需要先重定向输出再重定向输入,而管道就很好的可以解决这个麻烦。
符号:|
如debug中经常使用的:adb logcat | grep "zhangmq"
以前经常使用的一条命令,但是以前我都没有好好去看下为啥要这样使用,中间的 | 是啥意义,都没有真正去了解下。。。。。。

6.使用方括号
可以使用美元符号和方括号将数学表达式圈起来
$[1+6]
bash shell数学运算符只支持整数运算。

7.计算器bc
允许在命令行输入浮点表达式、解释表达式、计算并返回结果。bash能够识别:数字、变量、注释、表达式、编程语句、函数。
mengqin.zhang@U-mengqin-zhang:~/Documents$ bc -q
12.5*2.4
30.0
12*2.4
28.8
quit
在进行浮点数除法运算时,最好使用scale来控制你需要的小数点位数。
mengqin.zhang@U-mengqin-zhang:~/Documents$ bc -q
4.44/1
4
scale=3
4.44/1
4.440
var1=2
var1*3
6
print var1
2
quit
也可以在脚本中使用bc,格式:variable=`echo "options;expression" | bc`
如:
var=`echo "scale=4;5.32/3" | bc`
echo result:$var

8.退出脚本
shell中运行的每一个命令都使用退出状态码来告诉shell它完成了处理。
0:命令成功结束
1:通用未知错误,如参数错误等
2:误用shell命令
126:命令不可执行,如permission denied
127:没找到命令
130:通过Ctrl+C终止
255:突出状态码越界
使用$?来获取上个执行的命令的退出状态码。

9.exit命令
默认情况下,shell脚本会一脚本中的最后一个命令的退出状态码退出,但是我们也可以改变这个来返回自己的退出状态码。
使用exit命令可以在脚本命令结束时指定一个退出状态码:exit 8
然后使用echo $?时,会显示8

其实以前工作中也涉及到了脚本,但是都是写好了的,放在那里供我们使用。然而我自己都没有去稍微学习下。甚至有时候老大看我工作很繁琐还给我写过几个脚本给我使用,但是我都没有认真去看下。这种态度得改!!!



0 0
原创粉丝点击