首页 > 代码库 > [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
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。