Shell基础语法

Shell变量

Shell中的变量比较简单,不需要声明。并且只有一种类型:String。可以直接赋值,需要注意的是赋值语句中不能有空格。引用时,仅仅需要加上一个“$”即可。当然为了避免混淆,常常使用双引号包含要引用的变量,如下所示

#!/bin/bash
A=b
All=all
echo "$A"ll
echo "$All"

$ bll
all

条件判断

条件判断主要是用来判断两个字符串是否相等或者数字的大小。简单给一个例子

#!/bin/bash
a="$1"
if [ "$a" = "hello" ]
then
    echo "equal"
elif [ -z "$a" ]
then
   echo "是空的"
fi

比价简单,需要注意几点:

  • if和fi是成对出现的
  • "["后面有一个空格,这个不可少,其实很好理解"[ ]"中间运行的是一个脚本
  • 多种情况可以用elif
  • if和elif之后都要跟着then
  • “=”是否字符串比较运算,如果比较两个数字的大小,用 -eq
shell中的运算符
操作符 返回true的条件 操作数个数
-n 操作数的长度不为零 1
-z 操作数的长度为零 1
-d 操作数对应一个目录 1
-f 操作数对应一个文件 1
-eq 操作数为整数,并且相等 2
-neq 操作数为整数,并且不相等 2
= 操作数为字符串,并且相等 2
!= 操作数为字符创,并且不相等 2
-lt less than 操作数为整数 2
-gt great than 操作数为整数 2
-ge great equal 操作数为整数 2
-le less equal 操作数为整数 2

额,当搬运工真的很辛苦

循环

while[]...do...done语句

类似于C语言中的do...while语句,举例如下:

#!/bin/bash
echo "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"
                   ;;
     esac
done

for循环

for ... in ... do ... done
这点和python及java类似

#!/bin/bash
for x in 1 2 3 4 5 hello
do
   echo $x
done 

作用就是循环输出1 2 3 4 5 hello

for x in `ls`
do
   echo $x
done

作用就是输出当前路径下的所有文件名称
知识点是,使用``在脚本中执行语句

函数

还是直接给出例子吧

strcat()
{
   OUT="$1"" ""$2"
   return 0
}

strcat2()
{
   echo "$1"" ""$2"
   return 3
}

A="cat"
B="mouse"
OUT=""
strcat $A $B
echo OUT
OUT2=`strcat2 $A $B`
echo $?
echo $OUT2

知识点:

  • 函数定义不需要写明入参,使用时,直接使用$加序号获取
  • 变量的作用域是全局的
  • $?用于获取上次执行的脚本返回的值
  • OUT2=`strcat2 $A $B`不是直接将返回值赋值给OUT2,而是将strcat2的echo值赋值给OUT2。这说明,如果我们要返回值给调用者有两种方式,一种是全局变量赋值,另一种是在函数中echo出来。
    上述脚本执行完毕之后,输出的结果应该是这样的

cat mouse
3
cat mouse

你可能感兴趣的:(Shell基础语法)