1. 管道和重定向
文件描述符0:一个程序的标准输入
文件描述符1:标准输出
文件描述符2:标准错误输出
>操作符:把标准输出重定向到一个文件。
>>操作符:将输出内容附加到一个文件中。
|操作符:连接进程。
2. 作为程序设计语言的shell
2.1 创建脚本
注释以#符号开始。
#!字符告诉系统同一行上紧跟在它后面的寻附上参数是用来执行本文件的程序。
2.2 把脚本设置为可执行
chmod +x first
3. shell的语法
3.1 变量
默认情况下,所有变量被看作字符串并以字符串来存储。如果字符串里包含空格,必须用引号把它们括起来。
在shell中,通过在变量名前加 一个$符号来访问它的内容。当为变量赋值时,只需变量名。
zhangxin@zhangxin-VirtualBox:~/mypro$ salutation=hello
zhangxin@zhangxin-VirtualBox:~/mypro$ echo $salutation
hello
zhangxin@zhangxin-VirtualBox:~/mypro$ salutation = 'hello world'
salutation:未找到命令
zhangxin@zhangxin-VirtualBox:~/mypro$ salutation='hello world'
zhangxin@zhangxin-VirtualBox:~/mypro$ echo $salutation
hello world
zhangxin@zhangxin-VirtualBox:~/mypro$ salutation=+
zhangxin@zhangxin-VirtualBox:~/mypro$ echo $salutation
+
使用read命令将用户的输入赋值给一个变量。
zhangxin@zhangxin-VirtualBox:~/mypro$ read salutation
ni hao , xiao ming
zhangxin@zhangxin-VirtualBox:~/mypro$ echo $salutation
ni hao , xiao ming
与PHP语法类似,把带有$字符的变量放在双引号中,程序执行到这一行时会把变量替换为它的值;
如果把它放在单引号中,就不会发生替换现象。
在$字符前面加上一个\字符,会取消它的特殊含义。
#!/bin/sh myvar="Hi there" echo $myvar
echo "$myvar"
echo '$myvar'
echo \$myvar echo Enter some text
read myvar echo '$myvar' now equals $myvar
exit
~
执行这个脚本:
zhangxin@zhangxin-VirtualBox:~/mypro$ ./myvar.sh
Hi there
Hi there
$myvar
$myvar
Enter some text
good bye
$myvar now equals good bye