linux下shell编程中出现的一些问题(1)

2 篇文章 0 订阅

1、if语句逻辑判断

if[ "$variable" -eq ""$variable" ]语句的执行前面需要添加空格,否则执行会出现错误。

2、echo > filename和echo >> filename一定要看清楚,

’>‘会覆盖之前的内容,‘>>'则会在之前内容后面加上新内容

3、printf ”words“ 和echo somewords都输入到文本中去可以看出,

printf之后,光标留在current line,而echo之后,光标到a new line!想要使echo不换行,则需要使用echo -n somewords。

4、判断一个文件是否为空的方法:

最简单莫过于直接使用测试语句,即

if [ -s emptyfile  ];then

echo not empty

else

echo empty

fi

输出:empty

5、 判断一个文件夹下是否有一个文件的方法是:

if [ `ls 目录|grep filename` ];then

echo exit

else

echo nonexit

fi

6、count问题:

发现在做加法的时候不管是count=count+1,还是count=$count+1,竟然都进不去,始终是添加字符的操作;

最终发现,这种加减的方法是不对的,可以参照以下网页进行

http://gngzhh1.blog.163.com/blog/static/2049078920141168420686/

而最终我的方法采用了最常见的

let ”count=$count+1“,其实((count=count+1))也非常方便。

7、从文件中取出字符:count=`cat filename`,

读入字符到文件中去:echo $count > filename

8、printf "\r"的神奇,就运行以下程序

(参考网址:http://blog.csdn.net/zhuying_linux/article/details/6798083)

9、使用seq和tac来完成倒计时功能,下面是10s倒计时实例:

seq 10 | tac | awk '{printf "\r%s%d%s","waiting for a minute...",$0,"...";system("sleep 1")}'

10、变量的拼接:

对于地址变量来说,不能在前面使用还没有定义的变量作为地址变量的名称,例如:

ADDR=/home/test[$count].txt

for((i=0; i<=5; i++))

do

echo 123456 >$ADDR

echo $ADDR

done

由于变量还没有定义,所以在后面直接引用得不到想要的效果,引用变量应处于已定义的范围内,所以改程序改为

ADDR1=/home

for((i=0; i<=5; i++))

do

ADDR=/test[$count].txt

echo 123456 >$ADDR

echo $ADDR

done

即可。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值