shell使用小技巧

1. shell的各种$变量

变量名称代表含义变量名称代表含义
$#传入参数的个数$@所有传入的参数值
$$脚本运行的当前进程ID号$!后台运行的最后一个进程的ID号
$-显示Shell使用的当前选项,与set命令功能相同$?显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误。
$1除脚本名外的第一个参数

# ./test.sh first second
$#的值是2
$0的值是./test.sh
$1的值是first
$2的值是second
$@的值是first second
$-的值是hB
$$的值是25406
$?的值是0

2.两个非常使用的命令:dirname和basename

(1)dirname获取脚本的所在路径
[user@centos76 ~]$ cat test.sh
pwddir=$(cd $(dirname $0);pwd)
echo ${pwddir}
[user@centos76 ~]$ ./test.sh     
/home/user
(2)basename获取文件名
删掉所有的前缀包括最后一个slash(‘/’)字符
[user@centos76 ~]$ basename /home/test/test.sh
test.sh
basename NAME [SUFFIX] 可以去掉文件名后缀
[user@centos76 ~]$ basename /home/test/test.sh .sh
test
[user@centos76 ~]$ basename -s .sh /home/test/test.sh
test
[user@centos76 ~]$ basename -a any/str1 any/str2
str1
str2

3. for和while循环

关于循环里计数问题

for循环里的计数可以传到循环外,而while循环里的计数因为管道符 | 问题无法传到外面。那么如果将计数传到外面呢,可以试试下面的写法。

###for真的是怎么写都可以,无所谓,而while就不行
[user@centos76 ~]$ cat test.sh
#!/bin/bash
aa=0
for i in `cat log`;do aa=`expr $aa + 1`;done
echo "aa=$aa"
bb=0
cat log|while read line;do bb=`expr $bb + 1`;done
echo "bb=$bb"
[user@centos76 ~]$ ./test.sh
aa=139
bb=0
###改变while的写法
[user@centos76 ~]$ cat test.sh
#!/bin/bash
bb=0
while read line;do bb=`expr $bb + 1`;done < log
echo "bb=$bb"
[user@centos76 ~]$ ./test.sh
bb=139

未完待续,先这样,回头继续补充

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值