脚本:一个Shell脚本主要由原本需要在命令行输入的命令组成(用户可以使用脚本来把一些常用的操作组合成一组序列)。
脚本语言:主要用来书写脚本的语言。
linux中shell变量$#,$@,$0,$1,$2的含义解释:
$$
Shell本身的PID(ProcessID)
$!
Shell最后运行的后台Process的PID
$?
最后运行的命令的结束代码(返回值)
$-
使用Set命令设定的Flag一览
$*
所有参数列表。如"$*"用「"」括起来的情况、以"$1 $2 … $n"的形式输出所有参数。
$@
所有参数列表。如"$@"用「"」括起来的情况、以"$1" "$2" … "$n" 的形式输出所有参数。
$#
命令行上参数个数,但不包括shell脚本名本身
$0
Shell本身的文件名
$1~$n
添加到Shell的各参数值。$1是第1参数、$2是第2参数…。
标准文件名 文件描述字
• 标准输入文件(stdin) 0
• 标准输出文件(stdout) 1
• 标准出错输出文件(stderr) 2
重定向:
结果重定向(>)和结果附加重定向(>>)有什么区别?
> 会清除重定向的文件的内容 >>则不会只会附加
?即时文件定向符
命令 [参数]<< 标记符
输入行
…
标记符
注意:标记符要成对出现
例如:
mail $1 << !!
Best wishes to you on your birthday .
!!
用户定义的Shell变量
$ names="Zhangsan Lisi Wangwu"
$ echo $names
read命令 从键盘上读取数据
read 变量1 [ 变量2 …]
echo命令 显示其后的变量值或者直接显示它后面的字符串
echo -n 字符串 其中选项n表示输出文字后不换行;
stty -echo 设置命令不被显示 stty echo 取消不显设置
位置变量
?通过命令行上对应的实参传值
?用set命令对位置参数赋值
使用环境变量
如果要使用环境变量或其它shell变量的值,必须在变量名之前加上一个“$”符号,不能直接使用变量名。
如:cd $HOME
利用export命令将这些变量输出,使它们成为公用量。如:
export HOME HZ LOGNAME TERM
条件测试
a) test 命令
b) 用一对方括号将测试条件括起来
例如,测试位置参数$1是否是已存在的普通
文件,可写为:
test -f "$1"
或:[ -f "$1" ]
if test - f "$1"
then pr $1
elif test - d "$1"
then ( cd $1 ; pr * )
else echo "$1 is neither a file nor a
directory ."
fi
case语句允许进行多重条件选择:
case 字符串 in
模式字符串1 ) 命令
…
命令;;
模式字符串2
命令;;
模式字符串2 ) 命令
…
命令 ;;
…
模式字符串n ) 命令
…
命令;;
esac
'basename $0'放在双引号内可打印脚本文件名
单词:
parameter是指函数定义中参数,而argument指的是函数调用时的实际参数。
subdirectory 子目录
Bash (GNU Bourne-Again Shell) 是许多Linux发行版的默认Shell
其他:
$history 50 显示最后50行历史命令
tab键 自动补全命令
Ctrl + l 清屏,相当于执行clear命令