shell-----read的简单用法---shell脚本实现冒泡算法

一.read命令

  • read的选项
  • -a:将输入的内容读入到数值当中去
[root@192 opt]# vim 1.sh
#!/bin/bash
read -a abc
echo ${abc[@]}     //数组的表示方式
~               
[root@192 opt]# sh 1.sh
12 3 4 5 66 7
12 3 4 5 66 7
  • -d:表示delimiter,即定界符,一般情况下是以IFS为参数的间隔,但是通过-d,我们可以定义一直读到出现执行的字符位置。例如read –d madfds value,读到有m的字符的时候就不在继续向后读,例如输入为 hello m,有效值为“hello”,请注意m前面的空格等会被删除。这种方式可以输入多个字符串,例如定义“.”作为结符号等等。
[root@192 opt]# vim 1.sh
#!/bin/bash
read -d b
echo $b

[root@192 opt]# sh 1.sh   //当你输入到b时自动退出
qwxdfb
  • -e :只用于互相交互的脚本,它将readline用于收集输入行。
  • -n : 用于限定最多可以有多少字符可以作为有效读入。
[root@192 opt]# sh 1.sh
re 2
[root@192 opt]# 
[root@192 opt]# vim 1.sh

#!/bin/bash
read -n 4          //-n,表示有效数字,包括空格,输入到满足该位数时,退出
  • -p :用于给出提示符。
[root@192 opt]# sh 1.sh
输入yes/no:yes
yes
[root@192 opt]# vim 1.sh

#!/bin/bash
read -p "输入yes/no:" err  //-p用来给出提出信息
echo $err
  • -r :在参数输入中,我们可以使用’\’表示没有输入完,换行继续输入,如果我们需要行最后的’\’作为有效的字符,可以通过-r来进行。此外在输入字符中,我们希望/n这类特殊字符生效,也应采用-r选项。
[root@192 opt]# sh 1.sh
输入yes/no:yes/
yes/
[root@192 opt]# vim 1.sh

#!/bin/bash
read -p "输入yes/no:" -r err   //各个选项之间可以混合使用
echo $err

[root@192 opt]# sh 1.sh   //“\”表示继续书写
输入yes/no:yes\
no\  
yes\
no
yesnoyesno
[root@192 opt]# vim 1.sh

#!/bin/bash
read -p "输入yes/no:" err
echo $err
  • -s :隐藏输入内容,但是使用echo的话,会打印出来
[root@192 opt]# sh 1.sh
输入yes/no:
open
[root@192 opt]# vim 1.sh

#!/bin/bash
read -p "输入yes/no:" -s err
echo $err

  • -t :用于表示等待输入的时间,单位为秒,等待时间超过,将继续执行后面的脚本,注意不作为null输入,参数将保留原有的值
[root@192 opt]# sh 1.sh
输入yes/no:
[root@192 opt]# vim 1.sh

#!/bin/bash
read -p "输入yes/no:" -t 4 err   //当超过四秒不输入内容时,会自动退出
echo $err

 

二.使用shell脚本实现冒泡排序


#!/bin/bash
echo "请输入一组数字"
read -p "输入数字且以空格隔开:" -a  arrs
for((i=0;i<${#arrs[@]};i++))
     do
        for((j=0;j<${#arrs[@]}-1;j++))
             do
                if [[ ${arrs[j]} -gt ${arrs[j+1]} ]]
                        then
                                tmp=${arrs[j]}
                                arrs[j]=${arrs[j+1]}
                                arrs[j+1]=$tmp
                fi
             done
       done
echo "数据从小到大的排列:${arrs[@]}"

 

你可能感兴趣的:(shell)