全部博文(2759)
分类: LINUX
2013-08-10 21:50:15
原文地址:Linux 程序设计之shell 作者:forgaoqiang
DASH is a POSIX-compliant implementation of /bin/sh that aims to be as small as possible. It does this without sacrificing speed where possible. In fact, it is significantly faster than bash (the GNU Bourne-Again SHell) for most tasks. |
sh(Bourne):源于UNIX早起版本的最初的shell,Openwrt的默认shell |
csh、tcsh、zsh:Cshell及其变体 |
bash(Bourne Again Shell):免费高可移植性 |
kill -HUP 1234 > killout.txt 2>&1 |
set -o noexec 不执行而是仅仅进行语法检查 set -x
set -o verbose 执行命令之前回显命令
set -o xtrace 处理完命令后再回显
set -o nounset 遇到未定义的变量进行警告提示
set +o 对应的选项,取消这些设定
|
ps -xo comm | sort | uniq | grep -v sh | more |
* 可以匹配任意的字符串
[set] 取得set集总的任意一个单字符
[^set] 取得非set集合中的字符
|
点击(此处)折叠或打开
引号的使用
双引号内部的内容将会进行”解释翻译“,可以使用转义字符 \ 进行转义
单引号内的内容是原样输出
|
$HOME 当前用户的主目录
$PATH 冒号分割的搜索命令的目录列表
$IFS 输入域分隔符,默认是空格
$$ 脚本本身的进程编号
$# 传递给脚本的参数个数
$@ 参数的列表
$0 脚本自己的名字
$1 传递给脚本的第一个参数
|
if test -f fred.c ; then
...
fi
if [ -f fred.c ] ; then
...
fi
|
string1 = string2 # 注意不是两个等号,当然也可以用两个等号的形式
string1 != string2
-n string #字符串不为空则为真
-z stirng #字符串为空则为真
|
expression1 -eq expression2
-ne #not equal
-gt #great than
-ge #great equal
-lt #less than
-le #less equal
! expression #表达式为假则为真
# 强调下,如果使用的是[ ] 里面不能使用 > 这样的运算符逻辑运算符一样,在[ ] 中不能使用 || && 只能用 -a -o 这样的选项 但是 [[ ]] 中没有问题,而且[[ ]] 的效率更高
|
-d directory
-f file
-r readable
-w writeable
-e executable
-s size # 大小不为零则为真
|
条件语句
if [ -f /etc/passwd ]
then
...
elif [ -f /etc/shadow ] ; then
...
fi
|
for 循环语句
for file in *
do
...
done
exit 0
$($
done
|
点击(此处)折叠或打开
点击(此处)折叠或打开
function _name() {
statemenets
}
|
点击(此处)折叠或打开
if : ; then
: #如果什么都不写直接fi会发生语法错误的
fi
|
点击(此处)折叠或打开
exec wall "that's all,we will finish now" |
点击(此处)折叠或打开
-exec command 直接执行对应的命令,同时需要使用 \ 进行结束
find . -newer while2 -type f -name "*.sh" -exec rm {} \;
查找比while2新且是文件并且后缀是sh的的内容,然后全部删掉【通配符下的文件名必须使用双引号,而且结束的时候需要分号】
|