UNIX sh(Bourne Shell)脚本里面使用数组的两种方法
sh 不像 bash 和 ksh 那样可以非常方便的定义和使用数组,但是可以通过其它方式来模拟数组。
【方法1】通过 set 命令和位置参数来模拟数组
# 定义数组 set 'word 1' word2 word3 # 输出数组的第一个元素 echo $1 # 输出数组的第二个元素 echo $2 # 输出数组的第三个元素 echo $3 # 输出数组的所有元素 echo $* echo $@ # 向数组中增加一个元素 set -- "$@" word4 echo $4 # 查看数组元素的个数 echo $# # 遍历数组元素 for i in do "$@"; do echo "$i" done # 从数组中删除一个元素 shift echo $@ # 删除数组的所有元素 set x; shift
【方法2】使用 eval 命令模拟数组
定义数组并遍历数组元素:
#!/bin/sh eval a1=word1 eval a2=word2 eval a3=word3 for i in 1 2 3; do eval echo "The $i element of array is: \$a$i" done
根据用户输入的一句话来定义数组并遍历数组元素:
#!/bin/sh echo "Enter the sentence:" read str n=0 for word in $str; do n=`expr $n + 1` eval a$n="$word" eval echo "The $n element of array is: \$a$n" done
相关推荐
-
UNIX sh(Bourne Shell)脚本里面使用数组的两种方法
sh 不像 bash 和 ksh 那样可以非常方便的定义和使用数组,但是可以通过其它方式来模拟数组. [方法1]通过 set 命令和位置参数来模拟数组 # 定义数组 set 'word 1' word2 word3 # 输出数组的第一个元素 echo $1 # 输出数组的第二个元素 echo $2 # 输出数组的第三个元素 echo $3 # 输出数组的所有元素 echo $* echo $@ # 向数组中增加一个元素 set -- "$@" word4 echo $4 # 查看数组元
-
Shell脚本之无限循环的两种方法
for 实现: 复制代码 代码如下: #!/bin/bash set i=0 set j=0 for((i=0;i<10;)) do let "j=j+1" echo "-------------j is $j -------------------" done while实现: 复制代码 代码如下: #!/bin/bash set j=2 while true do let "j=j+1"
-
Linux通过Shell脚本命令修改密码的两种方式
交互方式修改密码 1. ssh 远程到主机: 2. 切换到root账号: [一般都是切换到root进行密码修改,如果普通用户修改自己的密码,要输入原密码,然后新密码要满足复杂度才OK]: 3. passwd username 使用passwd username 修改 username 的密码: 使用该命令会有提示,即进入了交互界面,输入密码即可. 使用脚本修改密码 很多时候我们可能需要远程执行服务器上的脚本来修改账号密码,此时就没有办法进行交互了. 此时可以使用如下两种方式修改密码: 方式1:
-
指针操作数组的两种方法(总结)
指针操作数组,方法一是p+index,方法二是p[index],第二种方法跟数组访问方法是一样的. 数组引用返回的是数组的第一个元素的指针地址. 可以将指针指向数组的任意元素,然后从那里开始访问,只要注意不越界就行了,这说明数组只是将元素连续堆叠,并不需要也没有其他的配置信息存放在数组元素之外的地方或者在头尾等等任何地方,都没有,他只是连续的存储而已. #include <iostream> using namespace std; int main() { const int ARRAY_L
-
JavaScript判断对象和数组的两种方法
在调用后端接口时,由于后端接口的不规范统一,接口最外层在没有数据时返回的是空数组(其实更想要的是空json对象),而在有数据时返回的是json对象,所以在接收到后端返回的接口时就需要首先判断返回的数据是对象还是数组,这里提供一些方法 方法一: //判断是否为数组 function isArray(obj) { return obj instanceof Array; } //判断是否为对象 function isObject(obj) { return obj instanceof Objec
-
laravel框架查询数据集转为数组的两种方法
方法一: return DB::table('game_matchperiod')->select('starttime')->where('Type',$type)->get() ->map(function ($value) {return (array)$value;})->toArray(); 方法二: public function objToArr($object) { //先编码成json字符串,再解码成数组 return json_decode(json_en
-
BAT脚本批量修改文件名的两种方法
目录 一,先进入想要修改文件名的文件夹中,使用命令: 1.以示例文档为例进行说明 2.双击1.bat来生成yuan.xls文件,如下图: 二.直接通过BAT脚本实现 通过BAT脚本批量修改文件名的办法有两种: 一,先进入想要修改文件名的文件夹中,使用命令: dir /b "*.后缀名" > yuan.xls 从生成含有所需文件名的xls文件(即Excel文件),然后在xls文件中通过 CONCATENATE("ren ",A2," ",B2
-
python脚本设置系统时间的两种方法
本文为大家分享了两种python脚本设置系统时间的方法,供大家参考,具体内容如下 第一种方法,使用Python设置系统时间,即给系统校时 #电脑时间用了一段时间后,系统时间不准了,想更新一下 #在windows里面,更新系统时间,时常失败,而且速度很忙. #在网上拷贝的代码,发现很好用,比windows自带的实现要快. #-*- coding:utf-8 -*- import socket import struct import time import win32api TimeServer
-
PHP中数组合并的两种方法及区别介绍
PHP数组合并两种方法及区别 如果是关联数组,如下: 复制代码 代码如下: $a = array( 'where' => 'uid=1', 'order' => 'uid', ); $b = array( 'where' => 'uid=2', 'order' => 'uid desc', ); 1. array_merge,如果两个数组存在相同的key,后面的一个会覆盖前面的 复制代码 代码如下: <?php $c = array_merge($a, $b); var_ex
-
shell脚本字符串和数组的使用操作方法
字符串 可以使用单引号和双引号定义字符串变量但是单引号中不支持变量解析 #! /bin/bash username="mayuan" str_1="hello ${username}" str_2='hello ${username}' echo $str_1 # hello mayuan echo $str_2 # hello ${username} 获取字符串的长度 #! /bin/bash username="mayuan" echo ${
随机推荐
- 基于使用paramiko执行远程linux主机命令(详解)
- MyBatis Properties及别名定义实例详解
- IOS上实现的自定义仪表盘示例
- C++初学者之根据输入的任何一个正整数,输出可能被表示的连续正整数
- Repeater控件实现编辑、更新、删除等操作示例代码
- php判断用户是否关注微信公众号
- 使用python装饰器验证配置文件示例
- Javascript 闭包引起的IE内存泄露分析
- asp 常用函数用法
- PowerShel程序执行完后删除脚本自身的方法
- VBS教程:函数-IsNull 函数
- sqlserver中查找所有包含了某个文本的存储过程
- 关于javascript作用域的常见面试题分享
- 卡巴斯基黑名单清除工具下载了
- 算法之排列算法与组合算法详解
- java数据库操作类演示实例分享(java连接数据库)
- Python压缩和解压缩zip文件
- ASP.NET 2.0中的数据操作之七:使用DropDownList过滤的主/从报表
- 通过具体程序来理解PHP里面的抽象类
- 清空iis log 中自己登录ip的vbs