单引号和双引号:单引号和双引号都能关闭shell对特殊字符的处理。不同的是,双引号没有单引号严格,单引 号关闭所有有特殊作用的字符,而双引号只要求shell忽略大多数,具体的说,就是①$美元符号②`反引号③/反斜杠,这3种特殊字符不被忽略。 不忽略美元符号意味着shell在双引号内部也进行变量名替换。
条件测试空格问题:通常用" [ ]"来表示条件测试。注意这里的空格很重要。要确保方括号的空格,例如:[(空格) -f "somefile"(空格) ],如果没有空格会报错
脚本中的数据类型
类型声明指令declare
1) i、a、f、r分别用来声明整数,数组,函数,只读类型变量
2) 默认情况下是字符和字符串类型
3) 脚本语言是弱类型语言
for语句
有两种形式
1)
For var in 1 2 3 4 5 6;do
添加自己的语句
Done
2)
For((i=0;i<100;i=i+1))//注意这里必须有两对括号,其中i为整型
Do
添加自己的语句
done
help documets问题
当要将几行文字传递给一个命令时,here documents(译者注:目前还没有见到过对该词适合的翻译)一种不错的方法。对每个脚本写一段帮助性的文字是很有用的,此时如果我们四有那个 here documents就不必用echo函数一行行输出。 一个 "Here document" 以 << 开头,后面接上一个字符串,这个字符串还必须出现在here document的末尾。
cat <<HELP
ren -- renames a number of files using sed regular expressions
USAGE: ren 'regexp' 'replacement' files...
EXAMPLE: rename all *.HTM files in *.html:
ren 'HTM$' 'html' *.HTM
HELP
要注意的是这些字符串要在两个HELP之间,同时也不必一定是HELP,取其它名字也可以
传递的参数问题
$0,$1…….$n代表这是第n个参数,其中$0表示脚本本身名字
比如:终端中输入./test my name is
则
$0 表示 ./test
$1 表示 my
$2 表示name
$3表示 is
还有就是
“#” 代表位置参数的数量 $#
“*” 代表所有的位置参数 $*
继续如上面的终端输入,则$#为3,$*表示my name is