• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell
您的位置:首页 > 脚本语言 >linux shell > Shell最多支持多少个参数?

Shell最多支持多少个参数?

作者:junjie 字体:[增加 减小] 来源:互联网

junjie 通过本文主要向大家介绍了shell 参数太多,shell 参数,shell脚本参数,shell 参数个数,shell 函数参数等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

在脚本编写过程中,通常会涉及到参数的输入。譬如,sh 1.sh 10 20,在执行1.sh这个脚本中,10即为第一个参数,20即为第二个参数。有时,就会有这个疑惑,即shell脚本最多可以支持多少个变量呢?疑惑之余,编写了如下脚本,可求出Shell脚本中可输入参数的最大个数。

该脚本涉及到三个小脚本:1.sh 2.sh 3.sh --在这里为了方便,脚本名都是极其简单的。总的思路是给定一个特定的值n,作为输入参数的最大个数,然后将1,2,3...n作为脚本的输入参数,这通过脚本2.sh来实现,接着原样输出这些参数。如果这些参数全部都能输出,即代表给定的n是合理的。这通过脚本3.sh来实现。1.sh实现的功能是通过一个死循环,递增生成n,通过引用2.sh来判定n是否合理。具体可见如下脚本。

首先我们来看看第一个脚本1.sh

#!/bin/bash
i=0
echo 0 > currnumber
while true
do
  i=$[$i+1]
  sh 2.sh $i
  if [ $? -ne 0 ];then
      echo $i > maxnumber
      exit 1
  else
      sed -i '1s/$/& '$i'/' currnumber
  fi
done
</div>

该脚本主要是提供了一个死循环,$i指的是可输入参数的个数,2.sh用于判定给定参数的个数是否合理,如果合理,则将该数值追加到currnumber这个文件中,如果不合理,则代表$i-1是shell能接受的最大参数个数。则将该数值输出到maxnumber文件中。

currnumber文件的应用便于检测脚本的执行情况。原打算是echo $i >> currnumber,即每一个合理的数值都输出一行,考虑到文件有最大行数的限制,在这里,就将数值输出到一行。sed -i '1s/$/& '$i'/' currnumber即实现该功能,将$i的值添加到行尾。

再来看看脚本2.sh

#!/bin/bash
rm -f 1.test
touch 1.test
num=$1
echo "#!/bin/bash" > 1.test
echo "sh 3.sh" >> 1.test
for ((i=1; i<=$num; i++))
do
   sed -i '2s/$/& '$i'/' 1.test
done
sh 1.test
</div>

脚本2实现的功能是将1,2,3...$i作为3.sh的输入参数,同样,sed -i '2s/$/& '$i'/' 1.test实现的是将1,2,3...n输出到一行。譬如如果$num=10,则1.test的内容如下所示:

#!/bin/bash
sh 3.sh 1 2 3 4 5 6 7 8 9 10
</div>

最后我们来看看脚本3.sh

#!/bin/bash
echo 0 > 2.test
num=$#
for ((i=1;i<=$num;i++))
do
   sed -i '1s/$/& '$i'/' 2.test
   shift 1
done
</div>

该脚本实现的是原样输出输入参数,并将该输入参数输出到2.test中。同样,sed -i '1s/$/& '$i'/' 2.test实现的是追加参数到一行。

总结:

1> sh 1.sh即可求出shell脚本允许的最大输入参数个数。

2> 因条件有限,没有具体求出该值。但我们可跳过1.sh,单纯的通过2.sh来判定特定的数值。如,sh 2.sh 100000,经测试100000个输入参数没有问题。

3> 该脚本的亮点是如何将特定的值追加到行尾,这主要通过sed -i '1s/$/& '$i'/' 2.test来实现,其实1s代表第一行。$代表行尾。

4> 在vim中,0可跳到行首,$可跳到行尾。

5> shift左移输入参数的位置。默认是左移1位。如shift 3表示原来的$4现在变成$1,原来的$5现在变成$2等等,原来的$1、$2、$3丢弃,$0不移动。

6> 该脚本存在一个隐患,即文本文件的行有最大的字符限制。但将100000作为输入参数个数进行测试时,没有问题,说明文本文件一行还是能容纳相当数量的字符。

PS: 在监测2.test的结果时,我们可以用watch cat 2.test,即每两秒查看一下2.test的内容,但该法有个弊端,数据较多时,无法在一个屏幕中显示,它只会显示前面固定的数据,新增的数据不会显示,但在该例中,我们更加关心的是数据是否增加。如下脚本可实现该功能:

#!/bin/bash
while true
do
   cat 2.test
   sleep 30
done
</div>

</div>

您可能想查找下面的文章:

  • Shell最多支持多少个参数?

相关文章

  • 定时导出mysql本地数据替换远程数据库数据脚本分享
  • 5个实用的shell脚本面试题和答案
  • Linux查找占用的端口,并杀死进程的方法
  • bash scp command not found的解决方法
  • shell的比较运算介绍
  • 详解Linux 操作系统下安装rpm包的方法步骤
  • Shell脚本实现批量生成nagios配置文件
  • 建立基于虚拟用户的VSftpd服务
  • expect实现批量修改linux密码脚本分享
  • git多账号登录问题解析

文章分类

  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell

最近更新的内容

    • Linux Shell 数组建立及使用技巧
    • php-fpm开机自动启动Shell脚本
    • linux文件搜索及其它基础命令介绍(3)
    • 实现android自动化测试部署与运行Shell脚本分享
    • 一个shell写的ping函数
    • Shell脚本实现查杀子进程、僵尸进程
    • shell脚本编程之for语句、if语句使用介绍
    • linux中编写自己的并发队列类(Queue 并发阻塞队列)
    • CentOS中使用Shell脚本实现每天自动备份网站文件和数据库并上传到FTP中
    • Linux中10个有用的命令行补全例子

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有