会再被执行。
9.5 fork
9.5.1 将此命令的参数,新建一个进程来执行
例如:在a.sh 中包含
fork b.sh 则当a.sh 执行到此句后,被b.sh替换,a.sh中此句后的语句继续执行。b.sh在新的进程中同时执行。
9.6 expr
9.6.1 expr argument operator argument
9.6.2 一般用于整数的运算。 例如:
#set newval=1
#echo $newval
1
#set newval=`expr $newval + 1`
#echo $newval
2
#set newval=$newval+1
#echo $newval
2+1
9.7 test
9.7.1 测试,通常用在需要判断的语句后面,例如:if,while,等等。
9.7.2 很多时候可以和中括号[]互换,我不知道区别是什么。
9.7.3 例子:
i=1
if test”$ i” == “1”
then
echo true
else
echo false
fi
9.8 exit
退出当前的shell,执行结果可以在shell中用$?查看
例如:exit 2
9.9 read
从标准输入读取数据。
例:
$ read var1 var2 var3
Hello my friends
$ echo $var1 $var2 $var3
Hello my friends
$ echo $var1
Hello
9.10 shift
9.10.1 每次调用的时候,将参数列表中的第一个参数去掉。这样可以循环得到第一个参数。
9.10.2 例子:
cat t.sh
sum=0
until [ $# -eq 0 ]
do
echo $*
sum=`expr $sum + $1`
shift
done
echo result is: $sum
#./t.sh 1 2 3
1 2 3
2 3
3
11、附件:Linux 易被遗漏的命令解析
11.1 grep
11.1.1 grep ‘string’ filename
11.1.1.1e.i.: grep ‘list’ mytxt.txt 在mytxt.txt中寻找包含list字符串的所有行
11.1.2 “-v” : 相反的。 即不包含字符串。
11.1.2.1e.i.: grep –v ‘list’ mytxt.txt
11.1.3 cat mytxt | grep ‘list’
将cat mytxt作为源, 从中查找包含list字符串的行
11.2 find
11.2.1 -atime n : 指查找系统中最后n*24小时访问的文件;
11.2.2 -ctime n : 指查找系统中最后n*24小时被改变状态的文件;
11.2.3 -mtime n : 指查找系统中最后n*24小时被修改的文件。
11.2.4 在当前目录下(包含子目录),查找所有txt文件并找出含有字符串"bin"的行
find ./ -name "*.txt" -exec grep "bin" {} \;
11.2.5 在当前目录下(包含子目录),删除所有txt文件
find ./ -name "*.txt" -exec rm {} \;
11.3 du
11.3.1 显示文件的大小
11.3.2 i.e.
#du *.txt
1230 myfile1.txt
456 myfile2.txt
11.4 awk
11.4.1 提取输入中的某个参数
11.4.2 提取输入中每一行的第一个参数
#echo `du *.txt | awk ‘{print $1}’`
1230 456
提取子字符串
#echo `du *.bin | awk '{print substr($1,2,3)}'`
11.5 前后台运行
11.5.1 将某个程序在后台启动起来,只需要在命令的最后加上 & 符号。
例如: ./test.sh &
11.5.2 将当前正在运行的程序切换到后台
11.5.2.1 当按下^z的时候,当前的应用程序就会切换到后台,但是此时的状态是停止的状态。
11.5.2.2 使用jobs命令可以看到当前在后台运行的程序的列表。
例如:jobs
[1]+ stopped top
[2]+stopped find | grep *.txt > a.log
11.5.2.3 使用bg命令可以将某个后台程序继续运行。
#bg %2
#jobs
[1]+ stopped top
[2]+ Running find | grep *.txt > a.log
11.5.3 将后台运行的程序切回到前台
#fg %2
将find 命令切回到前台
11.6 shell的执行选项
-n 测试shell script语法结构,只读取shell script但不执行
-x 进入跟踪方式,显示所执行的每一条命令,用于调度
-a Tag all variables for export
-c "string" 从strings中读取命令
-e 非交互方式
-f 关闭shell文件名产生功能
-h locate and remember functions as defind
-i 交互方式
-k 从环境变量中读取命令的参数
-r 限制方式
-s 从标准输入读取命令
-t 执行命令后退出(shell exits)
-u 在替换中如使用未定义变量为错误
-v verbose,显示shell输入行
11.7 alias
建立别名
alias dir ls
11.8 xargs
执行本命令的第一个参数,并将xargs的输入作为被执行命令的参数
例如:
find . -name '*.c' | xargs cat
将本目录及其子目录下所有的C文件使用cat命令显示其内容。
12、附件:Bash中影响环境变量的命令
Shell有若干以变量为工作对象的命令,其中有些命令似乎重复了。例如,可以用declare、export和typeset命令来创建全局(或转出)的变量。typeset命令是declare的同义词。
Declare 命令
语法:declare [options] [name [= value]]
摘要:用于显示或设置变量。
declare命令使用四个选项:
-f 只显示函数名
-r 创建只读变量。只读变量不能被赋予新值或取消设置,除非使用declare或者typeset命令
-x 创建转出(exported)变量
-i 创建整数变量。如果我们