shell脚本接收来自命令行传入的参数:

4 篇文章 0 订阅

第一个参数用$1表示,第二个参数用$2表示,以此类推。。

写一个简单的传参数脚本来测试:

#!/bin/bash

if [ $1 =="start" ]

  then

  echo"do start"

  elif [ $1 =="stop" ]

  then

  echo"do stop"

  else

  echo "Pleasemake sure the positon variable is start or stop."

fi

 

保存为test.sh  执行 ./test.sh start./test.sh stop

awk的结果如何写入数组中:
写了一个简单的功能:
B=(`awk  '/insert overwrite table/ {print $4}' $1`)
echo ${B[1]}
echo ${#B[@]}
输出数组元素个数

如何在变量中定义双引号:

用单引号 lstr='tblist="1111"'
echo $lstr
tblist="1111"
grep获取行号:
grep -nw "k=0" automan.sh
if判断:

bfile存在并且是块文件时返回真

-c file存在并且是字符文件时返回真

-d pathname存在并且是一个目录时返回真

-e pathname指定的文件或目录存在时返回真

-f file存在并且是正规文件时返回真

-g 当由pathname指定的文件或目录存在并且设置了SGID位时返回为真

-h file存在并且是符号链接文件时返回真,该选项在一些老系统上无效

-k 当由pathname指定的文件或目录存在并且设置了粘滞位时返回真

-p file存在并且是命令管道时返回为真

-r 当由pathname指定的文件或目录存在并且可读时返回为真

-s file存在文件大小大于0时返回真

-u 当由pathname指定的文件或目录存在并且设置了SUID位时返回真

-w 当由pathname指定的文件或目录存在并且可执行时返回真。一个目录为了它的内容被访问必然是可执行的。

-o 当由pathname指定的文件或目录存在并且被子当前进程的有效用户ID所指定的用户拥有时返回真。

-eq   等于

-ne   不等于

-gt   大于

-lt   小于

-le   小于等于

-ge   大于等于

-z    空串

=     两个字符相等

!=    两个字符不等

-n    非空串

-e filename     如果 filename存在,则为真

-d filename     如果 filename为目录,则为真

-f filename     如果 filename为常规文件,则为真

-L filename     如果 filename为符号链接,则为真

-r filename     如果 filename可读,则为真

-w filename     如果 filename可写,则为真

-x filename     如果 filename可执行,则为真

filename1 -nt filename2 如果 filename1 filename2新,则为真

filename1 -ot filename2 如果 filename1 filename2旧,则为真

-zstring               如果 string长度为零,则为真

-nstring               如果 string长度非零,则为真

string1 = string2       如果 string1 string2 相同,则为真

string1 != string2      如果 string1 string2 不同,则为真

num1 -eq num2           等于

num1 -nenum2           不等于

num1 -ltnum2           小于

num1 -lenum2           小于或等于

num1 -gtnum2           大于

num1 -genum2           大于或等于


实例1 判断参数是否为空:

if [ -z"$1" ];then
echo "please input parameter"
exit
else
echo "parameter 1: $1"
fi

实例2判断参数个数小于3个:

if [ $# -lt 3 ] ;then

echo "please input 3parameter"
exit
else
for var in $*; do
echo "var is $var"
done

fi


linux if命令

   无论什么编程语言都离不开条件判断。SHELL也不例外。

      if list then
          do something here
      elif list then
          do another thing here
      else
         do something else here
      fi
   

EX1:

#!/bin/sh

SYSTEM=`uname -s`    #获取操作系统类型,我本地是linux

if [ $SYSTEM = "Linux" ] ; then     #如果是linux的话打印linux字符串
echo "Linux"
elif [ $SYSTEM = "FreeBSD" ] ; then   
echo "FreeBSD"
elif [ $SYSTEM = "Solaris" ] ; then
echo "Solaris"
else
echo "What?"
fi     #ifend

基本上和其他脚本语言一样。没有太大区别。不过值得注意的是。[]里面的条件判断。

1 字符串判断

str1 = str2      当两个串有相同内容、长度时为真
str1 != str2
当串str1str2不等时为真
-n str1
当串的长度大于0时为真(串非空)
-z str1
当串的长度为0时为真(空串)
str1
   当串str1为非空时为真

2 数字的判断

int1 -eq int2    两数相等为真
int1 -ne int2
    两数不等为真
int1 -gt int2
int1大于int2为真
int1 -ge int2
int1大于等于int2为真
int1 -lt int2
int1小于int2为真
int1 -le int2
int1小于等于int2为真

3 文件的判断

-r file     用户可读为真
-w file
     用户可写为真
-x file
     用户可执行为真
-f file
     文件为正规文件为真
-d file
     文件为目录为真
-c file
     文件为字符特殊文件为真
-b file
     文件为块特殊文件为真
-s file
     文件大小非0时为真
-t file
     当文件描述符(默认为1)指定的设备为终端时为真

3 复杂逻辑判断

-a
-o

!
        非

结尾

    语法虽然简单,但是在SHELL里使用的时候,他的功能变得强大了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值