首页 > 代码库 > [Linux Command Line and Shell Scripting Bible] basic shell script

[Linux Command Line and Shell Scripting Bible] basic shell script

  1 #!/bin/bash  2 ############################################  3 # @content chapter 8,9 of Linux Command Line and Shell Scripting Bible  4 # @reader gavin  5 # @date 2014/12/14  6 ############################################  7 CHAPTER 8  8   9 + user varriable make the shell more like a computer program 10     1. 在给用户自定义变量赋值时,不能出现空格     11     2.shell script automatically determine the data type 12  13 + The backtick(`) allows you to assign the output of a shell command to a vari- 14     able 15     1.The shell runs the command within the backticks, and assigns the output to  16     the variable testing 17     (DO) 18     today=`date +%Y%m%d` 19  20 + redirecting the input and output 21     1.If the output file already exists, the redirect operator overwrites the exi- 22     sting file with the new file data 23     (DO): 24     ls > test 25     2.instead of overwriting the file’s contents, you may need to append output fr- 26     om a command to an existing file 27     (DO): 28     ls >> test 29     3.There’s another method of input redirection, called inline input redirection. 30     This method allows you to specify the data for input redirection on the command 31     line instead of in a file.The inline input redirection symbol is the double les- 32     s-than symbol (<<). Besides this symbol,you must  specify a text marker that  33     delineates the beginning and end of the data used for input. 34     (DO) 35     wc << EOF 36     > hello 37     > inline 38     > input 39     > redirection 40     > EOF 41     此处的EOF可以换成任意的MARKER 42  43 + pipe 44     1.The Linux system actually runs both commands at the same time, linking them 45     together internally in the system. 46     2.There’s no limit to the number of pipes you can use in a command 47  48 + performing math 49     1.expr命令可以执行数学运算,但是限制比较多,如要避免wildcard matching 50     (DO) 51     a=2 52     b=5 53     var=`expr $a \* $b` 54     echo -n "a*b is : " 55     echo $var 56     2.可以使用$[],来进行数学运算 57     (DO) 58     res=$[ $a + $b - ($a * $c) / ($b + $c) + $d ] 59     3.The bash shell mathematical operators only support integer arithmetic. This 60     is a huge limitation     if you’re trying to do any sort of real-world mathemat- 61     ical calculations. BUT There have been several solutions for overcoming the  62     bash integer limitation. The most popular solution uses the built-in bash ca- 63     lculator (called bc). 64     (TODO):page 220 65     这里可以使用bash calculater,但是暂时用不到,以后用到来再补上 66  67 + exiting the script 68     1.Every command that runs in the shell uses an exit status to indicate to the 69     shell that it’s done processing.(退出状态exit status,是一个0-255的整形值。他 70     是由执行的命令完成后传给shell的) 71     2.$?成功执行后的退出状态是0 72     Linux provides the $? special variable that holds the exit status value from  73     the last command that executed. You must view or use the $? variable immedi- 74     ately after the command you want to check. It changes values to the exit st- 75     atus of the last command executed by the shell Code 0 Successful completion  76     of the command 77     (DO) 78         1 General unknown error 79         2 Misuse of shell command 80         126 The command can’t execute 81         127 Command not found 82         128 Invalid exit argument 83         128+x Fatal error with Linux signal x 84         130 Command terminated with Ctl-C 85         255 Exit status out of range 86  87 + exit command 88     1.you can change that to return your own exit status code. The exit command  89     allows you to specify an exit status when your script ends: 90     (DO) 91         res=$[ $a + $b] 92         exit 5 93         当检测上面程序的exit code时$?=5,这里也可以使用变量作为exit的值 94  95  96 ########################################### 97 CHAPTER 9 98  99 + if100     if []; then101         prog1102     elif []; then103         prog2104     elif []; then105         prog3106     fi107 108 + the test command 109     1.直接判断一个命令的推测状态    if command; then110     2.可以使用 if test command; then。也可以使用 if [ command ]; then;注111     意${中括号里的命令必须前后都有空格}112     3.test command 可以测试3类条件113     (DO)114         ■  Numeric comparisons115         ■  String comparisons116         ■  File comparisons117 118 + numeric comparisons119     n1 -eq n2 Check if n1 is equal to n2.120     n1 -ge n2 Check if n1 is greater than or equal to n2.121     n1 -gt n2 Check if n1 is greater than n2.122     n1 -le n2 Check if n1 is less than or equal to n2.123     n1 -lt n2 Check if n1 is less than n2.124     n1 -ne n2 Check if n1 is not equal to n2.125     (DO)126     if [ $a -ge $b ]; then127         do something128     elif [ $a -lt $b ]; then129         do something else130     fi131     ${数值比较不能处理浮点类型}132 133     

 

[Linux Command Line and Shell Scripting Bible] basic shell script