Shell 学习

备注:都是自己学习总结的小demo,方便自己复习

#!/bin/bash

#在bash中,$( )与` `(反引号)都是用来作命令替换的。

#命令替换与变量替换差不多,都是用来重组命令行的,先完成引号里的命令行,然后将其结果替换出来,再重组成新的命令行。

#在操作上,这两者都是达到相应的效果,但是建议使用$( ),理由如下:

#``很容易与''搞混乱,尤其对初学者来说,而$( )比较直观。

#最后,$()的弊端是,并不是所有的类unix系统都支持这种方式,但反引号是肯定支持的。

 

#for file in $(ls /etc);

#

#do

#echo "i am at ${file}script"

#

#done

#注意变量跟等于号之间不能有空格

array_name=(value0 value1 value2 value3)

 

#  ${#array_name[@]}数组的长度

#   ${array_name[@]} 获取数组的所有元素

#for ((i=0;i<${#array_name[@]};i++))

#

# do

#   echo ${array_name[i]}

# done

#传递参数

#向脚本传递参数,脚本内获取参数的格式为:$n。n 代表一个数字,1 为执行脚本的第一个参数,2 为执行脚本的第二个参数,以此类推……

#  $@与$*相同,但是使用时加引号,并在引号中返回每个参数

#  $* 与 $@ 区别:

#相同点:都是引用所有参数。

#不同点:只有在双引号中体现出来。假设在脚本运行时写了三个参数 1、2、3,,则 " * " 等价于 "1 2 3"(传递了一个参数),而 "@" 等价于 "1" "2" "3"(传递了三个参数)。

# echo "---演示\$*---"

# for i in "$*";do

#   echo $i

# done

#

# echo "---演示\$@---"

# for i in "$@";do

#   echo $i

# done

 

#shell 基本运算符:注意2 + 2不能写成2+2

# a=100 b=20

#

# echo "两个数之和为:`expr $a + $b`"

# echo "两个数之差为:`expr $a - $b`"

# echo "两个数之积为:`expr $a \* $b`"

#把b的值赋给a

# a=$b

# echo "a的值是$a"

 

aa="abc"

bb="efg"

#if 语句格式如下:

# if condition

# then

  #command2

  #command1

# fi

 

if [ $aa = $bb ]

  then

    echo "$aa = $bb : aa 等于 bb"

  else

    echo "$aa != $bb : aa 不等于 bb"

fi

#""显示转义字符

echo  "\"it is a test\""

#显示换行 -e 开启转义    \c 不换行

echo -e "OKay \c"

echo -e "OK \n"

#原样输出字符串,不进行转义或取变量(用单引号)

echo `date`

 

printf "hello,shell \n"

#while 语句

 

int=1

while(($int<=5))

do

  echo $int

  let "int++"

done

#函数

age1=20

age2=40

#注意这个地方有个小坑`expr $age1 + $age2` 不能写成`expr $age1+$age2`

sum(){

#   return $(("两个数的和是: `expr $age1 + $age2`"))

   return $(($age1+$age2))

}

sum

echo "输入的两个数字之和为 $?"

#函数参数

#在Shell中,调用函数时可以向其传递参数。在函数体内部,通过$n的形式来获取参数的值例如,$1表示第一个参数,$2表示第二个参数,如果参数n>=10时,需要使用${n}

getType(){

  ref=$1

  echo "这是我的第一个shell函数$ref"

}

getType "哈哈"

 

 

#注意:函数与命令的执行结果可以作为条件语句使用。要注意的是,和 C 语言不同,shell 语言中 0 代表 true,0 以外的值代表 false。

#grep 是从给定字符串中寻找匹配内容的命令

judgStr(){

ref=$1

temp=$ref | grep -e hello

if $temp

then

  echo "grep 是从给定字符串中寻找匹配内容的命令"

else

  echo "啊哈 没匹配上"

fi

}

 

judgStr "hello"

 

 

 

 

###########################################################################################

#!/bin/bash

 

echo "hello world"

 

# for file in `ls /Users/xuzhenzhen/Desktop`; do

# echo "${file}"

# done

 

# for i in {1..100}; do

# let sum+=i

# #statements

# done

for a in Ada Coffe Action Java; do

#statements

echo "i am good at ${a}Script"

done

#双引号里可以有转义字符 可以有变量

# echo $sum

your_name='runoob'

str="Hello, I know you are \"$your_name\"! \n"

echo -e $str

# = 左右不能使用

greeting="hello ,"$your_name"!"

echo $greeting

#字符串长度

 

#查找子字符串

#反引号位 (`)在Linux中起着命令替换的作用

string="runoob is a great site"

 

 

my_arry=(a bash v)

echo ${my_arry[@]}

echo "第一个元素为:${my_arry[0]}"

 

 

 

nums=(29 100 13 8 91 44)

echo ${nums[@]}  #输出所有数组元素

echo ${nums[*]}  #输出所有数组元素

nums[10]=66  #给第10个元素赋值(此时会增加数组长度)

 

echo ${nums[4]}  #输出第4个元素

#expr 是一款表达式计算工具

 

#warning:巨坑 表达式和运算符之间要有空格,例如 2+2 是不对的,必须写成 2 + 2

val=`expr 2 + 2`

echo "两数之和为 : $val"

#warning 前后等号之间不能有空格

a=20

b=40

echo `expr $a + $b`

val=`expr $a \* $b`

echo "a*b的结果:$val"

#比较 [ $a前后要有空格

if [ $a==$b ] ;then

echo "a 等于b "

fi

 

if [ $a!=$b ] ;then

echo "a 不等于b"

fi

 

echo -e "OK! \n" # -e 开启转义

echo "It is a test"

 

echo -e "OK! \c" # -e 开启转义

echo "It is a test"

 

 

echo `date`

 

printf "hello shell \n"

 

#-eq 等于则为真

#-ne 不等于则为真

#-gt 大于则为真

#-ge 大于则为真

#-lt 小于则为真

#-le

 

 

ww=10

bb=20

if [[ $ww == $bb ]]; then

echo "ww 等于 bb"

elif [[ $ww -gt $bb ]]; then

    echo "ww 大于 bb"

else

echo "没有符合的条件"

fi

#shell 支持for 循环

for i in 1 2 3 4 5; do

echo "The value is:$i"

done

 

 

# int=1

# while [[ $int<=5 ]]; do

# echo  $int

# let "int++"

# done

 

int=1

while(( $int<=5 ))

do

    echo $int

    let "int++"

done

 

 

 

a=0

until [[ ! $a -lt 10 ]]; do

echo $a

a=`expr $a + 1`

done

 

# case 右分支条件适宜圆括号开始

#;; 表示break即执行结束

 

echo "输入1到4之间的数字"

 

read aNum

case $aNum in

1|2|4) echo "选择了$aNum"

;;

*) echo "你的数字不是1-5 游戏结束"

        

         ;;

esac

 

 

demoFunc(){

   echo "这是我的第一个shell 函数"

}

echo "----函数开始执行----"

demoFunc

echo "----函数执行完毕----"

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值