1. bash把[[$a -lt $b]]看做一个单独的元素,并返回一个退出状态码。 ((...))和let ...也能够返回退出状态码,当他们所测试的算术表达式的结果为非零时,返回退出状态码0.
2. [[...]]比[...]更通用,使用[[...]]能够防止许多逻辑错误,比如&&,||,<,>操作符能够正常存在于[[]]中,但是在[]中会报错。
3. if后面也可以是命令。 "if command"结构会返回command命令的退出状态码;
4. ((...))结构扩展并计算一个算术表达式,如果表达式结果为0,那么返回的退出状态码为1,或者是'假'。一个非零表达式的退出结果为0,或者'true'.
5. -a,-o与&&,||很像,但是&&,||是用在[[...]]结构中的。
6. a=4,b=5,这里a,b可以被认为是整型,也可被认为是字符串,所以算术比较与字符串比较容易让人产生混淆,因为bash并不是强类型的。 允许对变量进行整数操作与比较操作,前提是变量中智能包含数字字符。
1 #!/bin/bash
2 #This is a very simple example
3 #echo "hello world"
4 #echo "######################################"
5 #echo " Hellow! Wellcome"
6 #echo "######################################"
7 #echo " Hellow!
Wellcome"
8 #echo "######################################"
9 #echo -e " Hellow!
You Are Wellcome"
10 #echo "######################################"
11 #echo -e "Hellow! You Are Wellcome"
12 #echo "######################################"
13
14 #对变量赋值:
15 a="hello world"
16 # 现在打印变量a的内容:
17 echo "A is:"
18 echo $a
19
20 #有时候变量名很容易与其他文字混淆,比如:
21 num=2
22 echo "this is the $numnd"
23 #可以使用花括号{ }来告诉shell我们要打印的是num变量
24 num=2
25 echo "this is the ${num}nd"
26
27 #if [a="hello world"]
28 #then
29 #echo "Hello world"
30 #elif [$a="hello world"]
31 #then
32 #echo "hello world"
33 #else
34 #echo "Hello every one"
35 #fi
36
37 for x in 1 2 3 4 5
38 do
39 echo "$x,"
40 done
41 x=1999
42 let "x = $x + 1"
43 echo $x
44 x="olympic'"$x
45 echo $x
46
47 HELLO=Hello
48 function hello {
49 local HELLO=World
50 echo $HELLO
51 }
52 echo $HELLO
53 hello
54 echo $HELLO
55
56 x=20
57 if [ $x -gt 90 ]
58 then
59 echo "Good, ${x}"
60 elif [ $x -gt 70 ]
61 then
62 echo "OK, $x"
63 else
64 echo "Bad, $x"
65 fi
66
67 echo "Hit a key, then hit return."
68 read Keypress
69 case "$Keypress" in
70 [a-z] ) echo "Lowercase letter";;
71 [A-Z] ) echo "Uppercase letter";;
72 [0-9] ) echo "Digit";;
73 * ) echo "Punctuation, whitespace, or other";;
74 esac
75
76 square() {
77 let "res = $1 * $1"
78 return $res
79 }
80 square $1
81 result=$?
82 echo $result
83
84 a=$RANDOM
85 echo $a
86
87 echo ${var=There is an error}
88
89 passwd="aka@tsinghua"
90 ftp -n localhost <<FTPFTP
91 user anonymous $passwd
92 binary
93 bye
94 FTPFTP
95
96 for ((i=1;i<10;i=$i+1));do
97 echo "a"
98 done
99
100
101 OPTIONS="Hello Quit"
102 select opt in $OPTIONS; do
103 if [ $opt = "Quit" ]; then
104 echo done
105 exit
106 elif [ "$opt" = "Hello" ]; then
107 echo Hello World
108 else
109 clear
110 echo bad option
111 fi
112 done
113
114 exit 0