-
2021-12-03 11:51:39
可以在shell脚本中像使用其他变量一样使用$1变量。shell脚本会自动将命令行参数的值分配给变量,不需要你作任何处理。
如果需要输入更多的命令行参数,则每个参数都必须用空格分开。$ cat test2.sh #!/bin/bash # testing two command line parameters # total=$[ $1 * $2 ] echo The first parameter is $1. echo The second parameter is $2. echo The total value is $total. $ $ ./test2.sh 2 5 The first parameter is 2. The second parameter is 5. The total value is 10. $
shell会将每个参数分配给对应的变量。
更多相关内容 -
linux读取参数
2021-12-03 11:48:52linux读取参数bash shell会将一些称为位置参数(positional parameter)的特殊变量分配给输入到命令行中的所有参数。这也包括shell所执行的脚本名称。位置参数变量是标准的数字:$0是程序名,$1是第一个参数,$2是第二个参数,依次类推,直到第九个参数$9。
下面是在shell脚本中使用单个命令行参数的简单例子。$ cat test1.sh #!/bin/bash # using one command line parameter # factorial=1 for (( number = 1; number <= $1 ; number++ )) do factorial=$[ $factorial * $number ] done echo The factorial of $1 is $factorial $ $ ./test1.sh 5 The factorial of 5 is 120 $
-
shell脚本读取文件+读取命令行参数+读取标准输入+变量赋值+输出到文件
2021-05-18 06:41:04读取url_list文件批量下载网页url_listhttp://...读取url_list文件批量下载网页
url_list
http://www.tianyancha.com/company/2412078287
http://www.4399.com/special/1.htm
http://www.we7.cc/
http://kongzhong.tmall.com/
http://dianying.2345.com/
http://www.takefoto.cn/viewnews-1521788.html
http://www.x4jdm.com/bf/429-1-1.html
http://www.douyu.com/546715
http://www.zjedu.gov.cn/default.html
http://dl.xunlei.com/
download.sh
#!/bin/bash
for line in $(cat $)
do
id=$(echo $line| getid | awk '{$id=10000+$1;print $id;}')
echo $line | gethtmlfile $id > "./result/"${id}".html"
done
运行:
[spider@zhangsuosheng]$ chmod +x ./download.sh
[spider@zhangsuosheng]$ ./download.sh url_list
1、sh文件格式
http://www.runoob.com/linux/linux-shell.html
2、bash按行读取文件+bash读取命令行参数
测试文件:url_list_zss
[spider@zhangsuosheng]$ cat url_list_zss
cccccc
ddddddddd
aaaaaa
正确写法:
#!/bin/bash
for line in $(cat $)
do
echo $line
done
[spider@zhangsuosheng]$ chmod +x ./download.sh
[spider@zhangsuosheng]$ ./download.sh url_list
cccccc
ddddddddd
aaaaaa
不合适的写法:
#!/bin/bash
for line in 'cat $1'
do
echo $line
done
[spider@zhangsuosheng]$ chmod +x ./download_testhtml.sh
[spider@zhangsuosheng]$ ./download_testhtml.sh url_list_zss
cat $
https://www.jb51.net/article/122918.htm
3、读取命令行参数
https://blog.csdn.net/qq_30145093/article/details/78191941
https://blog.csdn.net/ruidongliu/article/details/9717905
4、加法运算
用的awk
5、读取管道中的标准输入 直接读/xargs
https://www.cnblogs.com/wangqiguo/p/6464234.html
6、变量赋值
https://blog.csdn.net/lemontree1945/article/details/79126819
7、字符串拼接
https://www.jb51.net/article/44207.htm
Shell脚本:while read line无法读取最后一行的问题
[1]Shell脚本:while read line无法读取最后一行的问题 刚刚利用shell脚本处理日志文件时,发现了一个问题:while read line无法读取到最后一行 通过编辑器可以看到待 ...
一只简单的网络爬虫(基于linux C/C++)————读取命令行参数及日志宏设计
linux上面的程序刚开始启动的时候一般会从命令行获取某些参数,比如以守护进程运行啊什么的,典型的例子就是linux下的man,如下图所示 实现该功能可以使用getopt函数实现,该函数在头文件uni ...
Shell脚本传递带有空格的参数
在另一博文中实现了通过脚本实现将DB2数据库导出到文件,需要传入七个参数,最后一个是一个带有空格字符串,所以传入的时候有点问题,会自动识别空格 ...
python读取命令行参数的方法
1.sys模块 需要模块:sys参数个数:len(sys.argv)脚本名: sys.argv[0]参数1: sys.argv[1]参数2: sys.argv[2] test.p ...
Shell脚本中判断输入变量或者参数是否为空的方法
shell判断一个变量是否为空方法总结 https://www.jb51.net/article/154835.htm 1.判断变量 复制代码代码如下: read -p "input a w ...
《Linux命令行与shell脚本编程大全》 第六章环境变量
很多程序和脚本都通过环境变量来获取系统信息.存储临时数据和配置信息. 6.1 什么是环境变量: bash shell用一个叫环境变量(environment variable)的特性来存储有关shel ...
Shell脚本、Shell脚本结构、date命令的用法、变量
1.Shell脚本: shell是一种脚本语言 目的:可以实现自动化运维,能大大增加运维的效率.2.Shell脚本结构: #!/bin/bash 以#!/bin/bash开头,即以/bin/ba ...
Shell脚本传递带有空格的参数[摘录自网络]
参数处理 说明 $# 传递到脚本的参数个数 $* 以一个单字符串显示所有向脚本传递的参数 $$ 脚本运行的当前进程ID号 $! 后台运行的最后一个进程的ID号 $@ 与$#相同,但是使用时加引号,并在 ...
node里读取命令行参数
一.process.env process.env属性返回一个包含用户环境信息的对象. 最常见的需求,前端需要根据不同的环境(dev,prd),来调用不同的后端接口.如果用webpack,是这么做的: ...
随机推荐
React-Native 渲染实现分析
前言 React Native与传统的HybirdApp最大区别就是抛开WebView,使用JSC+原生组件的方式进行渲染,那么整个App启动/渲染流程又是怎样的呢? React Native启动流程 ...
JAVA 冒泡算法
每种语言都有冒泡JAVA实现如下: public static void main(String args[]){ System.out.println("Start"); int ...
AngularJs定制样式插入到ueditor中的问题总结
总结一下自己给编辑器定制样式的过程中所遇到的问题,主要是编辑器的二次开发接口,以及用angular定制样式,问题不少,终于在**的帮助下,完成了,还剩下老版本和新版本的交互没有弄好,不过不难.下面分别 ...
android sudio 打包资料汇总
.http://blog.csdn.net/fengyuzhengfan/article/details/43876489 混淆2.http://my.oschina.net/fallenpanda/ ...
微信小程序用户信息解密失败导致的内存泄漏问题。
微信小程序获取用户解密的Session_key 然后对 encryptedData进行解密 偶尔报错 时间长了之后会报内存溢出: java.lang.OutOfMemoryError: GC over ...
npm ERR! Refusing to install package with name ";webpack"; under a package -----
当我们在安装以一些依赖的时候会提示以下报错--------- 问题出在: 这个name 不能使用所需要安装包的名字! 解决方案----- 修改下就行 -- -我将wenpack 改成webpack1 ...
解决Javascript中$(window).resize()多次执行
有些时候,我们需要在浏览器窗口发生变化的时候,动态的执行一些操作,比如做自适应页面时的适配.这个时候,我们需要在窗口拖动的时候去执行代码.但是有些时候,执行的操作比较复杂,我们只希望在窗口拖动完毕之后 ...
Spring Boot 实现RESTful webservice服务端实例
1.Spring Boot configurations application.yml spring: profiles: active: dev mvc: favicon: enabled: fa ...
SQL On Streaming
此文已由作者岳猛授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 实时计算的一个方向 实时计算未来会成为一个趋势,基本上所有的离线计算任务都能通过实时计算来完成,对于实时计算来 ...
-
Linux shell 脚本处理用户输入(命令行选项参数、用户输入)
2022-05-12 06:07:49简述了在bash shell 脚本中,如何使用命令行参数,如何设定命令选项及参数。从文件中读取的方法。shell 脚本处理用户输入
一、命令行参数
向shell脚本中传递数据的最基本方式就是命令行参数。允许在运行脚本时向命令添加数据。如:
zzz@ubuntu:~/my_learning$ ./test_cmd 10 20
读取位置参数
bash shell 会将一些称为位置参数的特殊变量分配给输入到命令行中的所有参数。位置参数变量是标准的数字:$0是程序名,$1是第一个参数,$2是第二个参数,以此类推。
如果 shell 脚本中使用命令行参数,但执行时未提供参数,会出现问题。所以在使用参数前一定要检查其中是否存在数据。zzz@ubuntu:~/my_learning$ cat test.sh #!/bin/bash echo "File name is $0" if [ -n "$1" ] then echo "The \$1 is $1" else echo "\$1 未提供." fi zzz@ubuntu:~/my_learning$ ./test.sh 10 File name is ./test.sh The $1 is 10 zzz@ubuntu:~/my_learning$ ./test.sh File name is ./test.sh $1 未提供. zzz@ubuntu:~/my_learning$
特殊参数变量
- $# : 含有脚本运行时携带的命令行参数的个数。
- $* : 将命令行上提供的所有参数当作一个单词保持。这个单词包含了命令行中出现的每一个参数值。
- $@: 将命令行上提供的所有参数作为一个字符串上多个独立的单词,可用于遍历所有的参数值。
zzz@ubuntu:~/my_learning$ cat test.sh #!/bin/bash echo "$0 参数个数:$#" echo "\$* 遍历输出:" for val in "$*" do echo "$val" done echo "\$@ 遍历输出:" for val in "$@" do echo "$val" done zzz@ubuntu:~/my_learning$ ./test.sh 10 20 ./test.sh 参数个数:2 $* 遍历输出: 10 20 $@ 遍历输出: 10 20 zzz@ubuntu:~/my_learning$
shift 移动变量
shift 命令可以移动操作命令行参数: $3的值赋值给$2,$2的值赋值给$1,$1的值删除。count=1 while [ -n $1 ] do echo "Parameter$count is $1" count=$[ $count + 1 ] shift done
二、命令行选项和参数
命令行的选项是指,在执行命令时同时提供的单破折号后面的单字母,能改变命令的行为。
getopts 命令内建于bash shell。getopts 命令的格式如下:getopts optstring variable
有效的字母都会列在 optstring 中,如果选项字母要求有参数值,就在字母后加 “:” 。如果命令行提供了 optstring 中没有的参数,将会输出错误信息,可以在 optstring 前添加 “:” 来去掉错误信息。
getopts 会将当前参数保存在 variable 中。getopts 命令会用到两个环境变量。如果选项需要跟一个参数值,参数值将保存在OPTARG环境变量。OPTIND环境变量保存了参数列表中 getopts 正在处理的参数位置,这样可以在处理完选项之后继续处理其它命令行参数。zzz@ubuntu:~/my_learning$ cat test.sh #!/bin/bash echo while getopts :ab:c opt do case "$opt" in a) echo "deal -a option";; b) echo "deal -b option, with value $OPTARG";; c) echo "deal -c option";; *) echo "Unknow option";; esac done zzz@ubuntu:~/my_learning$ ./test.sh -ab b_value -c deal -a option deal -b option, with value b_value deal -c option zzz@ubuntu:~/my_learning$
三、获得用户输入
基本的读取用户输入
read 命令从标准输入或另一个文件描述符中接受输入。在收到输入后,read命令会将数据放进一个变量。read -p 提示信息 read -t 指定一个计时器,指定等待输入的秒数,到期后,返回一个非零退出状态码 read -s 在显示器上不显示输入
zzz@ubuntu:~/my_learning$ cat test1.sh #!/bin/bash read -p "输入一个字符串: " str echo "str is $str" zzz@ubuntu:~/my_learning$ ./test1.sh 输入一个字符串: zz str is zz zzz@ubuntu:~/my_learning$
可以为 read 指定多个变量。
zzz@ubuntu:~/my_learning$ cat test1.sh #!/bin/bash read -p "输入一个名字: " first last echo "Name is $first$last" zzz@ubuntu:~/my_learning$ ./test1.sh 输入一个名字: z zz Name is zzz zzz@ubuntu:~/my_learning$
如果在 read 命令行中不指定变量。read 命令将会把接受到的所有数据都放进特殊环境变量 REPLY 中。
zzz@ubuntu:~/my_learning$ cat test1.sh #!/bin/bash read -p "输入一个名字: " echo "Name is $REPLY" zzz@ubuntu:~/my_learning$ ./test1.sh 输入一个名字: z zz Name is z zz zzz@ubuntu:~/my_learning$
四、从文件中读取
read 命令也可以读取 Linux 文件中保存的数据。每次调用 read 命令,都会从文件中读取一行文本,当文件中没有内容时,read 退出并返回非零退出状态码。
zzz@ubuntu:~/my_learning$ cat files This is Line1. This is Line2. This is Line3. This is Line4. zzz@ubuntu:~/my_learning$ cat test2.sh #!/bin/bash cat files | while read line do echo "Read: '$line'" done echo "Read Finished." zzz@ubuntu:~/my_learning$ ./test2.sh Read: 'This is Line1.' Read: 'This is Line2.' Read: 'This is Line3.' Read: 'This is Line4.' Read Finished. zzz@ubuntu:~/my_learning$
-
Linux shell 学习笔记(10)— 处理用户输入(命令行读取参数、读取用户输入、超时处理)
2019-05-22 22:13:111. 命令行参数 向 shell 脚本传递数据的最基本方法是使用命令行参数。... bash shell 会将一些称为位置参数(positional parameter)的特殊变量分配给输入到命令行中的所有参数。这也包括 shell 所执行... -
Linux-read命令获取用户输入
2022-01-01 22:42:47-t 超时参数 -n 选项 -s选项 read命令从标准输入(键盘)或另一个文件描述符中接受输入。在收到输入后, read命令会将数据放进一个变量。 #!/bin/bash # testing the read command # echo -n "Enter your name:... -
linux之shell快速入门系列<6> | shell中read读取控制台输入
2022-03-19 17:35:49我们在学习其他编程语言的时候,掌握控制台输入函数是非常必要的,比如C语言的scanf(),java的Scanner类下的next(),nextInt()等,在Linux的shell脚本编程中当然也少不了控制台输入了。在Shell中read就很好的为我们... -
【Linux读取JSON格式文件】
2022-03-15 18:47:38本函数为在调试板载WiFi模块UDP通信时设置的获取JSON格式参数所写,大大减少了以前每个参数都写一遍重复代码的时间 -
Linux Shell read读取控制台输入
2019-05-08 21:02:06基本语法 read(选项)(参数) 选项: -p 后面跟提示信息,即在输入前打印提示信息。 -t:后面跟秒数,定义输入字符的等待时间,如果没有在指定的时间内输入就不再等待 ... -
Linux读取文件命令
2020-07-26 13:53:52linux除了使用vim查看文件还有以下 1、cat f1.txt,查看f1.txt文件的内容。 2、cat -n f1.txt,查看f1.txt文件的内容,并且由1开始对所有输出行进行编号。 3、cat -b f1.txt,查看f1.txt文件的内容,用法与-n相似,... -
Linux Shell read 命令(从标准输入或管道读取数值)
2021-06-18 14:08:48Linux read命令用于从标准输入读取数值。 read 内部命令被用来从标准输入读取单行数据。这个命令可以用来读取键盘输入,当使用重定向的时候,可以读取文件中的一行数据。 语法 read [-ers] [-a aname] [-d delim... -
linux shell获取键盘输入
2021-05-17 09:27:01linux shell从键盘获取输入代码1:#!/bin/bash#提示“Input your choice:”,把用户的输入保存入变量choice_user中read -p "Input your choice:" choice_userecho "your choice:${choice_user}"#提示“请输入姓名”... -
Linux 串口读取
2021-07-09 16:44:09//每个单位是0.1秒 20就是2秒 如果这样设置,就完全阻塞了,只有串口收到至少8个数据才会对READ立即返回,或才少于8个数据时,超时2秒也会有返回 另外特别注意的是当设置VTIME后,如果read第三个参数小于VMIN ,将会... -
linux 从键盘读取变量值 命令:read
2021-05-20 04:43:06该命令可以一次读取多个变量的值,变量和输入的值都需要使用空格隔开。在read命令后面,如果没有指定变量名,读取的数据将被自动赋值给特定的变量REPLY语法read (选项) (参数)选项-p:指定读取值时的提示符;-t:... -
linux怎么读取光盘里的文件?
2021-05-12 02:40:45/root目录下输入命令:# mount /mnt/cdrom如输出错误为: mount: can't find cdrom in /etc /fstab or /etc/mtab可知在/etc/fstab找不到要挂载的文件有两种解决方式:1.输入命令:#mount -t iso9660 /dev/cdrom /mnt/... -
Linux:read读取控制台输入
2019-03-19 21:47:54命令:read -t 10 -p "输入一个数字" num 一、基本语法 read(选项)(参数) 选项: -p:指定读取值时的提示符; -t:指定读取值时等待的时间(秒),如果没有...案例2:读取控制台输入一个num值,在10秒内输入。 ... -
shell编程——Shell读取用户输入
2021-10-18 09:58:52读取用户输入 选择性输入,例如yes or no 密码输入,不适合回显 read命令读取用户输入,输入的内容放到变量里 read name echo "read name, name is $name" read age echo "read age, age is $age" read... -
Linux下使用脚本读取参数修改配置文件
2019-12-21 00:38:11将传递参数修改为一个配置文件,每次执行时默认读取配置文件根据区中的内容修改对应的文件信息。添加条件判断,满足条件时执行5的操作。 概述 在Linux下经常会遇到需要使用脚本来自动修改配置文件内容的需求,... -
linux shell脚本读取用户输入的参数
2016-06-22 11:29:56$# 是传给脚本的参数个数 $0 是脚本本身的名字 $1是传递给该shell脚本的第一个参数 $2是传递给该shell脚本的第二个参数 $@ 是传给脚本的所有参数的列表 -
关于linux:如何使用文件行作为命令的参数?
2021-05-09 09:18:58说,我有一个文件foo.txt指定N自变量arg1arg2...argN我需要传递给命令my_command如何使用文件的行作为命令的参数?"参数"是复数,还是"参数"是单身? 接受的答案仅在单参数的情况下才是正确的(这是正文要查询的内容)... -
Linux中结束指令的标准输入
2020-10-29 09:28:32Linux中很多指令同时支持文件输入和标准输入,大部分标准输入,都是用-符号表示标准输入,然而在使用该指令时遇到了一个问题,就是这中输入输入回车符号不会结束输入,导致不知该如何结束; 办法 想结束输入时,需要... -
Linux shell 获取脚本文件后面的参数的方法
2022-05-03 17:21:09Linux shell 获取脚本文件后面的参数的方法 -
Linux输出信息并将信息记录到文件(tee命令)
2021-01-11 02:35:11它从标准输入读取内容并将其写到标准输出和文件中。 例如: ls | tee ls_tee.txt cat ls_tee.txt 使用 tee 时,如果想保留目标文件原有的内容,可以使用 -a 参数,附加至给出的文件,而不是覆盖它。 命令 tee 的参数... -
Linux通过shell命令读取ADC电压
2022-04-25 14:36:38Linux通过shell命令读取ADC电压 ...对于Linux系统上的ADC读取,在m3352上支持4路ADC输入,系统提供/sys文件系统接口操作, 在/sys/bus/iio/devices/iio:\device0/目录下有in_voltage4_raw~in_voltage7_raw这四个 -
如何在Linux shell脚本中提示用户输入
2021-05-08 23:54:46本篇文章给大家介绍关于如何在Linux shell脚本中提示用户输入?下面来看具体的内容。我们首先来看一下命令# read var# read -s “Waiting for input: ” var用途:read命令用于在Linux shell脚本中获取用户输入。带... -
linux shell tee(读取标准输入的数据,并将其内容输出成文件)
2018-06-01 13:39:37linux tee 命令详解 http://blog.csdn.net/sidely/article/details/42010687 Shell百科 http://shellbaike.com/ -
Linux Shell 脚本交互输入
2021-11-19 22:06:21常规输入:回车、Yes/No等 1.cat + 文件 + 管道符 cat commend.txt | apt-get install ssh 2.echo + 管道符 echo -e "Y" | apt-get remove ssh echo -e 处理转义字符 3.... -
linux快速搜索已经输入的命令:
2021-05-13 09:27:53)输入要查找命令的关键字,会显示在第二个红色标记位置,如果找到对应的命令,会显示在第三个标记位置, 如果不是自己期望的命令,可以多次使用“ctrl+r”切换显示命令,然后按键enter或者->即执行命令。二、... -
如何传递和解析Linux Bash脚本参数和参数
2020-10-08 06:00:14Bash is a powerful scripting language provides by various Linux distributions, Unix and BSD. If we need to make our script dynamic we generally use arguments. Arguments are provided to the script thro...