-
变量
variable=value // 赋值号=的周围不能有空格 echo $variable // 输出变量 skill="Java" echo "I am good at ${skill}Script" // 加花括号是为了帮助解释器识别变量的边界 variable=$(command) // 将命令的结果赋值给变量 unset variable_name // 删除变量
-
特殊变量
变量 含义 $0 当前脚本的文件名。 $n
(n >= 1)
传递给脚本或函数的参数。n 是一个数字,表示第几个参数。例如,第一个参数是 $1,第二个参数是 $2。 $# 传递给脚本或函数的参数个数。 $* 传递给脚本或函数的所有参数。 $@ 传递给脚本或函数的所有参数。当被双引号 " "
包含时,$@ 与 $* 稍有不同$? 上个命令的退出状态,或函数的返回值 $$ 当前 Shell 进程 ID。对于 Shell 脚本,就是这些脚本所在的进程 ID。
当 $* 和 $@ 不被双引号" "
包围时,它们之间没有任何区别,都是将接收到的每个参数看做一份数据,彼此之间以空格来分隔。但是当它们被双引号" "
包含时,就会有区别了:
"$*"
会将所有的参数从整体上看做一份数据,而不是把每个参数都看做一份数据。"$@"
仍然将每个参数都看作一份数据,彼此之间是独立的。
-
Shell重定向
# 在输出重定向中,>代表的是覆盖,>>代表的是追加。 command >file #以覆盖的方式,把 command 的正确输出结果输出到 file 文件中。 command >>file #以追加的方式,把 command 的正确输出结果输出到 file 文件中。 command 2>file #以覆盖的方式,把 command 的错误信息输出到 file 文件中。 command 2>>file #以追加的方式,把 command 的错误信息输出到 file 文件中。 command >file 2>&1 #以覆盖的方式,把正确输出和错误信息同时保存到同一个文件(file)中。 command >>file 2>&1 #以追加的方式,把正确输出和错误信息同时保存到同一个文件(file)中。 command >file1 2>file2 #以覆盖的方式,把正确的输出结果输出到 file1 文件中,把错误信息输出到 file2 文件中。 command >>file1 2>>file2 #以追加的方式,把正确的输出结果输出到 file1 文件中,把错误信息输出到 file2 文件中。 # 输入重定向 command <file #将 file 文件中的内容作为 command 的输入。 command <<END #从标准输入(键盘)中读取数据,直到遇见分界符 END 才停止(分界符可以是 任意的字符串,用户自己定义)。 command <file1 >file2 #将 file1 作为 command 的输入,并将 command 的处理结果输出到 file2。
-
Shell管道与过滤器
命令 说明 awk 用于文本处理的解释性程序设计语言,通常被作为数据提取和报告的工具。 cut 用于将每个输入文件(如果没有指定文件则为标准输入)的每行的指定部分输出到标准输出。 grep 用于搜索一个或多个文件中匹配指定模式的行。 tar 用于归档文件的应用程序。 head 用于读取文件的开头部分(默认是 10 行)。如果没有指定文件,则从标准输入读取。 paste 用于合并文件的行。 sed 用于过滤和转换文本的流编辑器。 sort 用于对文本文件的行进行排序。 split 用于将文件分割成块。 strings 用于打印文件中可打印的字符串。 tac 与 cat 命令的功能相反,用于倒序地显示文件或连接文件。 tail 用于显示文件的结尾部分。 tee 用于从标准输入读取内容并写入到标准输出和文件。 tr 用于转换或删除字符。 uniq 用于报告或忽略重复的行。 wc 用于打印文件中的总行数、单词数或字节数。