shell 预定义变量, for while循环 ,函数

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 循环:





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值