by the way ,vim 撤销是u ,反撤销Ctrl+r
0.shell 算术运算,
参考 http://blog.chinaunix.net/uid-26527275-id-3164104.html
总结一下:
方法一:echo $[ 1+2] #dash 好像不支持这种
方法二:echo $((1+2)) #好像只有这种用起来比较方便
方法三: expr 1 + 1 #算符前后有空格,乘号要写成\*
方法四: let x=2*9
关于方法二,
i=$(($i+1))
i=$((i+1))
两种写法好像都行
1.预定义变量
参考:
http://blog.163.com/wang_hai_fei/blog/static/309020312008214104412770/
http://outofmemory.cn/code-snippet/8511/linux-shell-get-background-process-pid
#!/bin/sh
echo $* #参数
echo $$ #当前进程id
echo $! #上一个后台运行的进程的id
echo $? #上一个进程的返回值
echo $# #参数数量
echo $0 # 参数0
echo $1 # 参数1
echo $2 # 参数2
运行结果
xxx@xxx-desktop:~/temp$ ./args_test.sh a1 a2 a3 a4
a1 a2 a3 a4
1208
0
4
./args_test.sh
a1
a2
现在后台运行一个程序,然后等待其结束
xxx@xxx-desktop:~/temp$ java -jar hello_sleep.jar > hello.log &
[2] 5001
xxx@xxx-desktop:~/temp$ echo $!
5001
xxx@xxx-desktop:~/temp$ wait $!
shell的返回值,和c语音写的程序中的返回值是一样的,都可以用$?得到:
xxx@xxx-desktop:~/temp$ cat ./exit_test.sh
#!/bin/sh
echo begin
return 234
echo end
xxx@xxx-desktop:~/temp$ ./exit_test.sh
begin
xxx@xxx-desktop:~/temp$ echo $?
234
2.循环
for循环
#!/bin/sh
echo loop 1:
for i in $(seq 90 100)
do
echo $i
done
echo loop 2:
for i in `seq 90 100`
do
echo $i
done
echo loop 3:
for (( i=0; i<10; i++ )) #dash 会报错,bash 正常
do
echo $i
done
while 循环: