shell脚本备忘

来源:互联网 发布:mysql排序函数 编辑:程序博客网 时间:2024/06/05 04:48

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

#!/bin/bashecho "hello bash"  #display one message


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

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

 ./mehello bash



2 获取输入参数

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

#!/bin/bashecho $1echo $2echo $3执行该脚本,输出为:./me i love youiloveyou



3 定义变量

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

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

#!/bin/bashA=bAll = allecho "$A"llecho All执行该脚本,输出为:./mebllall


4 条件判断

if [ "$1" = "normal" ]then echo "this is normal case"elif [ -z "$1" ]then echo "no input, ignal..."fi


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

#!/bin/bashecho "please use add or delete or exit"ACTION="default"while [ -n $ACTION ]do    read ACTION    case $ACTION in        add)            echo "add somebody"            ;;        delete)            echo "delete somebody"            ;;        exit)            echo "complete"            break            ;;        *)            echo "invalide action, please re-enter"            ;;    esacdone

6 for 循环

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

#!/bin/bashfor X in 1 2 3 4 5 hellodoecho $Xdone


再举一个

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

for X in `ls`doecho `basename $X`echo `dirname $X`done uname

for语句和if语句为例

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


#!/bin/bash#rename files without ext name to txt file.for X in `ls`do     Base="`basename $X`"    if [ -z `echo $Base | grep "\."` ]    then        `mv $Base $Base.txt`        echo $Base    fidone


7函数

#!/bin/bashstrcat(){    OUT="$1"" ""$2"    return 0}strcat2(){    echo "$1"" ""$2"    return 3}A="bird"B="mouse"OUT=""strcat $A $Becho $OUTOUT2=`strcat2 $A $B`echo $? #//上一个命令的返回结果echo $OUT2#执行该脚本,输出为:./mebird mouse3bird mouse


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

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