2014-12-27 16:05:28
来 源
中存储网
Linux
Linux shell入门实例演示,本人菜鸟新入门,希望与大家一起分享和交流linux shell入门学习的经验和心得。
变量:
   ("")双引号:用于标记多个特殊符号,但是对$,,`,!符号例外  
   ('')单引号:作用同上,但是可以标记""所不能的特殊符号  
   (``)反引号[!前的那个符号,不是单引号]一般用来执行命令  
   ()反斜杠:转义符号,用于标记单个特殊符号.
1
2
3
4
[root@redhat ~]# winner=bob
[root@redhat ~]# notice="the person who won is $winner"
 [root@redhat ~]# echo $notice
the person who won is bob ##将$winner解析成变量
1
2
3
4
5
6
[root@redhat ~]# winner=bob
 [root@redhat ~]# notice='the person who won is $winner'
 [root@redhat ~]# echo $notice
the person who won is $winner ##$winner只是符号
[root@redhat ~]# echo $winner
bob
1
2
3
4
5
6
[root@redhat ~]# winner=bob
[root@redhat ~]# notice="the person who won is $winner"
 [root@redhat ~]# echo $notice
the person who won is $winner ##用将$转义成字符
 [root@redhat ~]# echo $winner
bob
1
2
3
[root@redhat ~]# listnew='ls *.new'
 [root@redhat ~]# echo $listnew
ls main.cf.new master.cf.new ##仔细查看,两个结果不一样的
1
2
3
[root@redhat ~]# listnew=`ls *.new`
 [root@redhat ~]# echo $listnew
 main.cf.new master.cf.new
字符:
   空格(space): 解析命令行参数  
   (*)(?)({and}):产生文件名列表  
   (.): 代表当前目录  
   ($): 对变量求值  
   (>)(<):    重定向标准输入或输出  
   (&):       执行后台命令  
   (|):       管道输出

一般命令:
   echo 显示变量及字符  
   read 从用户处接受输入  
   <<  输入重定向

脚本命令相关:
   $0 Linux命令名  
   $n 命令行参数  
   $* 由号码1开始的所有的命令行参数  
   $@ 分别访问命令行参数  
   $# 命令参数的个数

运算:
   exprort 将局部变量导出为该shell中的全局变量  
   +,-,*,/,>,<,>=,<=,=(用于字符串的比较),==(用于数字的比较),!=,&(与),|(或),!(非).
1
2
3
4
5
6
[root@redhat ~]# let a=2*7
 [root@redhat ~]# echo $a
 14
[root@redhat ~]# let a="2 * 7"
 [root@redhat ~]# echo $a
 14
   test比较运算,在比较运算中,正确结果的返回值是0,而不是传统程序上的1  
  -gt 一个数是否大于另一个数  
   -lt 小于  
   -ge 大于等于  
   -le 小于等于  
   -eq 等于(用于数值)  
   -ne 不等于  
   -z 是否为空字符串  
   -n 字符串是否大于0  
   =  字符串是否相等  
   != 是否不等  
   str 是否非空  
   -a  与  
   -o 或  
   !  非  
   -f 是否为普通文件  
   -s 文件是否为空  
   -r 文件是否可读  
   -w 文件是否可写  
   -x 文件是否可执行  
   -d 是否为目录  
   -h 是否为符号链接  
   -c 是否与字符设备相关联  
   -b 是否与块文件相关联
1
2
3
4
5
6
7
8
[root@redhat ~]# num=5
 [root@redhat ~]# test $num -eq 10
[root@redhat ~]# echo $?
##返回比较的结果值
 [root@redhat ~]# num=5
 [root@redhat ~]# test $num -eq 5
 [root@redhat ~]# echo $?
 0
下面的[]符号和test的作用等同
1
2
3
4
5
6
7
8
[root@redhat ~]# num=5
 [root@redhat ~]# [ $num -eq 10 ]##注意中间空格的地方
[root@redhat ~]# echo $?
 1
[root@redhat ~]# num=5
 [root@redhat ~]# [ $num -eq 5 ]
 [root@redhat ~]# echo $?
 0
给个小脚本试试
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
[root@redhat ~]# vi lss.sh
 #!/bin/bash                                 ##使用bash
echo This is a list Bash Script
echo S: list sizes
echo L: List all file information
echo C: list c Files
echo -n "Please enther choice:"
read choice                                ##等待用户输入
case $choice in
s|S)          ##如果输入的是s,不区分大小写
  ls -s
;;
l|L)         ##如果输入的是l,不区分大小写
  ls -l
;;
c|C)                                     ##如果输入的是c,不区分大小写
  ls *.new
;;
*)                                           ##都不是的话
echo error
esac
[root@redhat ~]# chmod +x lss.sh
 [root@redhat ~]# ./lss.sh
 This is a list Bash Script
S: list sizes
L: List all file information
C: list c Files
Please enther choice:l
total 69
-rw-r--r--  1 root root  1251 Oct 24 15:01 anaconda-ks.cfg
drwx------  3 root root  1024 Oct 24 15:04 Desktop
-rw-r--r--  1 root root   545 Jan 19 15:22 genhtml.sh
-rw-r--r--  1 root root 47583 Oct 24 15:01 install.log
-rw-r--r--  1 root root  4702 Oct 24 15:01 install.log.syslog
-rwxr-xr-x  1 root root   248 Jan 19 15:56 lss.sh
-rw-r--r--  1 root root  2737 Jan  6 12:45 main.cf.new
-rw-r--r--  1 root root  3125 Jan  6 12:45 master.cf.new
-rwxr-xr-x  1 root root   263 Dec  5 17:39 userandgroupadd.sh

声明: 此文观点不代表本站立场;转载须要保留原文链接;版权疑问请联系我们。