shell脚本备忘

来源:互联网 发布:淘宝历史宝贝如何上架 编辑:程序博客网 时间:2024/06/04 20:01

linux下常用的脚本包括 bash 和shell

官方手册 http://www.gnu.org/software/bash/manual/bashref.html

1输出信息

[html] view plaincopy
  1. #!/bin/bash  
  2.   
  3. echo "hello bash"  #display one message  


将以上内容保存为一个文本文件,名为me。扩展名任意,但常用 .sh作为扩展名。

执行命令 chmod a+x me 命令,为me 添加执行权限。然后在Ternimal 中运行该脚本

[html] view plaincopy
  1. ./me  
  2.   
  3. ello bash  



2 获取输入参数

$n  n为1-9自然数,代表输入中的第n个参数

[html] view plaincopy
  1. #!/bin/bash  
  2.   
  3. echo $1  
  4.   
  5. echo $2  
  6.   
  7. echo $3  
  8.   
  9. 执行该脚本,输出为:  
  10. ./me i love you  
  11.   
  12. i  
  13.   
  14. love  
  15.   
  16. you  



3 定义变量

赋值语句中不能有空格,引用变量时只需变量前加上$符号即可。

为避免混淆,常常使用双引号包含要引用的变量

[html] view plaincopy
  1. #!/bin/bash  
  2.   
  3. A=b  
  4.   
  5. All = all  
  6.   
  7. echo "$A"ll  
  8.   
  9. echo All  
  10.   
  11. 执行该脚本,输出为:  
  12.   
  13. ./me  
  14.   
  15. bll  
  16.   
  17. all  


4 条件判断

[html] view plaincopy
  1. if [ "$1" = "normal" ]  
  2. then   
  3.     echo "this is normal case"  
  4. elif [ -z "$1" ]  
  5. then   
  6.     echo "no input, ignal..."  
  7. fi  


5 while [] ...do...donw 语句

[html] view plaincopy
  1. #!/bin/bash  
  2. echo "please use add or delete or exit"  
  3. ACTION="default"  
  4. while [ -n $ACTION ]  
  5. do  
  6.     read ACTION  
  7.     case $ACTION in  
  8.         add)  
  9.             echo "add somebody"  
  10.             ;;  
  11.         delete)  
  12.             echo "delete somebody"  
  13.             ;;  
  14.         exit)  
  15.             echo "complete"  
  16.             break  
  17.             ;;  
  18.         *)  
  19.             echo "invalide action, please re-enter"  
  20.             ;;  
  21.     esac  
  22. done  

6 for 循环

for 一般和in联合作用,用于从某个集合中逐个取出元素并对期进行操作,如下代码所示

[html] view plaincopy
  1. #!/bin/bash  
  2. for X in 1 2 3 4 5 hello  
  3. do  
  4.     echo $X  
  5. done  


再举一个

`符号是!符号左边的键。

[html] view plaincopy
  1. for X in `ls`  
  2. do  
  3.     echo `basename $X`  
  4.     echo `dirname $X`  
  5. done   
  6. uname  

for语句和if语句为例

功能:给当前目录下没有扩展名的文件加上 .txt扩展名


[html] view plaincopy
  1. #!/bin/bash  
  2. #rename files without ext name to txt file.  
  3.   
  4. for X in `ls`  
  5. do   
  6.     Base="`basename $X`"  
  7.     if [ -z `echo $Base | grep "\."` ]  
  8.     then  
  9.         `mv $Base $Base.txt`  
  10.         echo $Base  
  11.     fi  
  12. done  


7函数

[html] view plaincopy
  1. #!/bin/bash  
  2. strcat()  
  3. {  
  4.     OUT="$1"" ""$2"  
  5.     return 0  
  6. }  
  7.   
  8. strcat2()  
  9. {  
  10.     echo "$1"" ""$2"  
  11.     return 3  
  12. }  
  13.   
  14. A="bird"  
  15. B="mouse"  
  16.   
  17. OUT=""  
  18. strcat $A $B  
  19. echo $OUT  
  20. OUT2=`strcat2 $A $B`  
  21. echo $? #//上一个命令的返回结果  
  22. echo $OUT2  
  23.   
  24. #执行该脚本,输出为:  
  25. ./me  
  26. bird mouse  
  27. 3  
  28. bird mouse  


定义函数时,不需要定义参数,直接使用$1,$2代表第n个参数

可以使用return返回整数数值,不能返回字符串,不写return 默认是0

原创粉丝点击