Shell学习之获取用户输入的参数为变量

  • A+
所属分类:shell学习笔记
本文信息本文由方法SEO顾问发表于2015-08-2522:17:37,共 2209 字,转载请注明:Shell学习之获取用户输入的参数为变量_【方法SEO顾问】

一、获取用户输入

1、基本读取read命令接收标准输入的输入,或其它文件描述符的输入。得到输入后,read命令将数据输入放入一个标准变量中。

[root@rac2 ~]# cat t8.sh 

#!/bin/bash

#testing the read command

echo -n "enter your name:"   ---:-n用于允许用户在字符串后面立即输入数据,而不是在下一行输入。

read nameecho "hello $name ,welcome to my program."

[root@rac2 ~]# ./t8.sh 

enter your name:zhouhello zhou ,welcome to my program.

read命令的-p选项,允许在read命令行中直接指定一个提示:

[root@rac2 ~]# cat t9.sh 

#!/bin/bash

#testing the read -p option

read -p "please enter your age:" age  ---age与前面必须有空格

echo "your age is $age"

[root@rac2 ~]# ./t9.sh 

please enter your age:10

your age is 10

2、在read命令中也可以不指定变量,如果不指定变量,那么read命令会将接收到的数据防止在环境变量REPLAY中

[root@rac2 ~]# cat t10.sh 

#!/bin/bash

#tesing the replay environment variable

read -p "enter a number:"factorial=1

for (( count=1; count<=$REPLY; count++ )) 

do   factorial=$[ $factorial * $count ]

done

echo "the factorial of $REPLY is $factorial"

[root@rac2 ~]# ./t10.sh 

enter a number:5

the factorial of 5 is 120

3、计时-t选项指定read命令等待输入的秒数。当计时器计时数满时,read命令返回一个非零退出状态

[root@rac2 ~]# cat t11.sh 

#!/bin/bash

#timing the data entryif read -t 5 -p "please enter your name:" namethen    

echo "hello $name ,welcome to my script"else  echo "sorry ,tow slow!"fi

[root@rac2 ~]# ./t11.sh 

please enter your name:zhouhello zhou ,welcome to my script

[root@rac2 ~]# ./t11.sh 

please enter your name:sorry ,tow slow!

4、默读有时候需要脚本用户进行输入,但不希望输入的数据显示在监视器上,(实际上是显示的只是read命令将文本颜色设置为与背景相同的了)。

[root@rac2 ~]# cat t12.sh 

#!/bin/bash

#hiding input data from the monitor

read -s -p "enter your password:" passe

cho  "is your password really $pass?"

[root@rac2 ~]# ./t12.sh 

enter your password:is your password really 12345?

5、读取文件每调用一次read命令都会读取文件中的一行文本,当文件中没有可读的行时,read命令将以非零退出状态退出。

[root@rac2 ~]# cat t13.sh 

#!/bin/bash

count=1

cat test | while read linedo  echo "line $count:$line"  count=$[$count + 1]

done

[root@rac2 ~]# ./t13.sh 

line 1:zhouline 2:xiaoline 3:zhou

实际应用

以前在做SEO数据分析时经常要做的件事就是去下载网站的sitemap,每次都要重新写一个SH脚本,现在通过输入要下载的sitemap地址的方式,使得脚本可以通用了。

使用效果见下图:

下面是read.sh源代码:

#!/bin/bash
#指定下载哪个网站的sitemap.xml,并将所有URL提取出来,并统计数量。
#作者:方法@seofangfa.com
#时间:2015.8.26
echo  "请输入你要下载的网站的sitemap地址,如www.wealink.com/sitemap.xml"   #echo -n用于允许用户在字符串后面立即输入数据,而不是在下一行输入。
read url #接受用户输入的参数
curl -s $url|grep -oP '(?<=<loc>).*?(?=</loc>)'|xargs wget #将用户输入的参数传入curl命令
wait #等待上一个命令执行完
cat *.xml|grep -oP '(?<=<loc>).*?(?=</loc>)'>all-url.txt #过滤出所有的URL
lines=`cat all-url.txt|wc -l`#统计一共有多少URL
echo "一共有$lines个URL" #在屏幕上提示一共有多少URL
wget $url #将用户输入的参数传入wget命令,下载当前sitemap.xml

  • 版权声明:除非注明,本博客均为北京SEO方法的原创文章,转载或引用请以超链接形式标明本文地址,否则会在SEO圈内公开此种不尊重版权的行为,谢谢合作!本文地址:https://seofangfa.com/shell/linux-shell-canshu.html
  • 转载请注明:Shell学习之获取用户输入的参数为变量_ 【方法SEO顾问】

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: