shell编程入门

变量

定义:

vaename=value
环境变量
export varname=value
unset var
用unset命令可以删除已定义的环境变量或本地变量。
引用变量 ${varname}或 $varname
语句以换行或;结尾
执行命令 `cmd`;也可以$(cmd); 返回执行后输出的字符串

位置变量 $0 程序的名称 $1 第一个参数 以此类推
$* 所有的参数 $# 参数数量

算术计算

$(()) 例如

var=45
echo $(($VAR+3));
$(())中只能用+-*/和()运算符,并且只能做整数运算。
var1=1
var2=2
let sum=var1+var2
自加操作
let no1++
自减操作
let no1--
操作符[]的使用方法和let命令类似:
result=$[ no1 + no2 ]
expr同样可以用于基本算数操作:
result=`expr 3 + 4`
result=$(expr $no1 + 5)
以上这些方法只能用于整数运算,而不支持浮点数。

5)使用bc(可以进行浮点数计算)
   var=1
   var=`echo "$var+1.2"|bc`
   echo $var
   输出结果为2.2

n   计算平方以及平方根:

echo "sqrt(100)" | bc #Square root

echo "10^10" | bc #Square

6) 用awk命令计算
var=`echo 5 6.6 | awk '{print $1*$2 }'`


字符串操作


单引号和双引号的用法语php类似
字符串操作
${var:=DEFAULT} 如果var没有被声明, 或者其值为空, 那么就以$DEFAULT作为其值 *
${#string} $string的长度
${string:position:length} 在$string中, 从位置position开始提取长度为length的子串
例如
string=1234567890
p=2
l=5
echo ${string:p:l} 将输出 34567
${string/substring/replacement}  使用$replacement, 来代替第一个匹配的$substring
${string/substring/replacement}  使用replacement, 代替第一个匹配的substring
${string//substring/replacement} 使用replacement, 代替所有匹配的substring
另外可以调用外部命令如awk sed grep来处理字符串


流程控制


 1.条件判断
  if [ condition ] && [ condition ] ;then
    cmd
  elif [ condition ] || [ condition ] ;then
    cmd
  else
    cmd
  fi

    if语句内判断参数
    -f 当file存在并且是正规文件时返回真

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

  -b 当file存在并且是块文件时返回真

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

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

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

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

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

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

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

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

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

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

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

  Shell 里面比较字符写法:
  -eq   等于
  -ne   不等于
  -gt   大于
  -lt   小于
  -le   小于等于
  -ge   大于等于
  -z    空串
  =    两个字符相等
  !=    两个字符不等
  -n    非空串
    ! 将条件取反

case 语句

echo "input : "
read num
echo "the input data is $num"

case $num in
1) echo "January";;     双分号结束
2) echo "Feburary";;
5) echo "may"          每个case可以有多条命令       
   echo "sdfd"
   echo "sdf";;        但最后一条命令一定是双分号结束
6 | 7)                
   echo '6 or 7';;
*) echo "not correct input";;   *)是其他值、default的意思  
esac

for循环

1、 for((i=1;i<=10;i++));do echo $i; done
2、在shell中常用的是 for i in $(seq 10) do ..... done  seq 打印从1到10的数
5、for i in $* ; do ..... done
9、for i in $(ls *.txt) do ..... done

while [ condition  ]
do
cmd
done

until [ condition ]

 do

 命令序列

done

还可以这样
while true

do

   if [ condiction ]
    then
     break
    fi
done
当然还支持 continue;

函数


1、可以带function funname()  定义,也可以直接fun() 定义,不带任何参数。
2、参数返回,可以显示加:return 返回,如果不加,将以最后一条命令运行结果,作为返回值。 return后跟数值n(0-255)
3、必须在调用函数地方之前,声明函数.
4. shell中函数,是定义一个新的命令,它是命令,因此 各个输入参数直接用空格分隔。函数值通过$?获得
5,载入外部的函数 ./pathname/filename;将外部函数载入到当前shell环境 source path/filename

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值