Shell

来自刘东华的维基
跳转至: 导航搜索

概述

shell脚本。

用法

# 引用文件
# 方法一:使用source
source filename
# 方法二:使用.
. filename
# 方法三:使用sh
sh filename
 
 
# --

逻辑运算符

逻辑卷标 含义
(1). 关于档案与目录的侦测逻辑卷标!
-f 常用!侦测『档案』是否存在 eg: if [ -f filename ]
-d 常用!侦测『目录』是否存在
-b 侦测是否为一个『 block 档案』
-c 侦测是否为一个『 character 档案』
-S 侦测是否为一个『 socket 标签档案』
-L 侦测是否为一个『 symbolic link 的档案』
-e 侦测『某个东西』是否存在!
(2). 关于程序的逻辑卷标!
-G 侦测是否由 GID 所执行的程序所拥有
-O 侦测是否由 UID 所执行的程序所拥有
-p 侦测是否为程序间传送信息的 name pipe 或是 FIFO (老实说,这个不太懂!)
(3). 关于档案的属性侦测!
-r 侦测是否为可读的属性
-w 侦测是否为可以写入的属性
-x 侦测是否为可执行的属性
-s 侦测是否为『非空白档案』
-u 侦测是否具有『 SUID 』的属性
-g 侦测是否具有『 SGID 』的属性
-k 侦测是否具有『 sticky bit 』的属性
(4). 两个档案之间的判断与比较 ;例如[ test file1 -nt file2 ]
-nt 第一个档案比第二个档案新
-ot 第一个档案比第二个档案旧
-ef 第一个档案与第二个档案为同一个档案( link 之类的档案)
(5). 逻辑的『和(and)』『或(or)』
&& 逻辑的 AND 的意思
| | 逻辑的 OR 的意思


运算符号 含义
= 等于 应用于:整型或字符串比较 如果在[] 中,只能是字符串
!= 不等于 应用于:整型或字符串比较 如果在[] 中,只能是字符串
< 小于 应用于:整型比较 在[] 中,不能使用 表示字符串
> 大于 应用于:整型比较 在[] 中,不能使用 表示字符串
-eq 等于 应用于:整型比较
-ne 不等于 应用于:整型比较
-lt 小于 应用于:整型比较
-gt 大于 应用于:整型比较
-le 小于或等于 应用于:整型比较
-ge 大于或等于 应用于:整型比较
-a 双方都成立(and) 逻辑表达式 –a 逻辑表达式
-o 单方成立(or) 逻辑表达式 –o 逻辑表达式
-z 空字符串
-n 非空字符串

内置变量

There are many shell built-in variables which are used for administrating and writing shell scripts. In this post
 we will see important built-in variables and their importance. Please add any other built-ins which are useful for 
administration and for shell scripting.
 
Note: in order get present values of these variables use echo command to get them. For example if you want to see
 present shell then you can give echo $SHELL to get the value.
 
$SHELL –Gives present shell
 
$HISTSIZE –Gives the size of number of Commands that can be accommodated in History file
 
$HISTFILE –To get the history file location
 
$USER –Displays username
 
$EUID –Display UserID.
 
$GROUPS – To get GID info.
 
$PWD –Display’s present working Directory.
 
$HOSTNAME –Displays hostname.
 
$HOME –Give you user’s home directory.
 
$HOSTTYPE or $MACHTYPE – To get host architecture ie 32bit or 64 bit.
 
$OSTYPE –Detect OS, such as gnu Linux, sun sol etc. Useful for controlling the shell script flow.
 
$TERM –Gives you terminal name.
 
$TMOUT –Exit the shell, if no activity was there on terminal, useful for securing the server.
 
$PATH –Get path to all the binaries ie commands
 
$PIPESTATUS –To get exit status of piped output.
 
$BASH_VERSION –To get bash version. Useful for controlling the shell script flow.
 
$PPID –Get parent process ID.
 
$PS1, $PS2, $PS3, $PS4 –Different prompts. These are useful for menu driven scripts.
 
In Scripting
 
$RANDOM –To get a random number, very much useful for giving random passwords for new users.
 
$LINENO –To get what is the present line number the script is executing. Useful for debugging a shell script.
 
$REPLY –REPLY holds last read value.
 
$SECONDS –To get number of seconds the script is running.
 
Positional parameters: $1, $2, $3, $4, $5, $6, $7, $8, $9
 
$0 –Gives script name
 
$* –All positional parameters
 
$@ All positional parameters with spaces
 
$# –Number of Parameters
 
$$ –Current Process ID
 
$! –ID of Background job
 
$? –Error or exit status
 
$_ –Get previous command last argument


问题汇总

  • 单双引号的区别

单引号:当shell碰到第一个单引号时,它忽略掉其后直到右引号的任何字符。
双引号:与单引号类似,但它只忽略大多数字符,一些特殊字符不被忽略,如:$,\,`,! ,特殊字符依然按照shell来执行。