shell数组

[学习笔记]C编程执行shell命令

六月ゝ 毕业季﹏ 提交于 2019-12-06 14:15:22
写一些shell脚本个人更喜欢用python或者c,一方面是因为bash掌握不精。。。。另一方面是c中执行shell命令可以快速将结果传回程序中进行后续处理,而python便捷的字符串处理可以让脚本写的更加迅速。 本章先简单介绍一些C的相关内容,从而可以让你快速用C语言写一个调用shell的程序 首先介绍一下C程序如何获取命令行参数 int main(int args,char* argv[]) args就是参数数量,而argv为参数数组 在stdlib.h库中,支持函数 system(command) 该函数会直接执行shell命令,如果有输出则直接打印在bash上,不会返回给我们的程序 第二种常见方法为 FILE * fp; char buffer[256]; fp=popen(“ls”,”r”); fgets(buffer,sizeof(buffer),fp); printf(“%s”,buffer); pclose(fp); 通过popen将输出返回到一个文件指针上,可以通过读取文件的方式获得输出。 来源: https://www.cnblogs.com/trickofjoker/p/11988921.html

面试时必须懂的shell知识

六月ゝ 毕业季﹏ 提交于 2019-12-06 07:08:43
一、Shell脚本是什么、它是必需的吗? 一个Shell脚本是一个文本文件,包含一个或多个命令。作为系统管理员,我们经常需要使用多个命令来完成一项任务,我们可以添加这些所有命令在一个文本文件(Shell脚本)来完成这些日常工作任务。 二、什么是默认登录shell,如何改变指定用户的登录shell? 在Linux操作系统,“/bin/bash”是默认登录shell,是在创建用户时分配的。使用chsh命令可以改变默认的shell。示例如下所示: chsh <username> -s <shell> 三、可以在shell脚本中使用哪些类型的变量? 可以定义如下两种类型的变量 系统定义变量 用户定义变量 四、如何将标准输出和错误输出同时重定向到同一位置? 可以有两种实现方法: 2>&1 &> 五、shell脚本中”if”语法如何嵌套? 示例如下: if [ 条件 ] then; command ... else if [ 条件 ] then; command... else command... fi fi 六、shell脚本中"$?"标记的用途是什么? “$?”可以来检查前一命令的结束状态,通常”0”表示成功,”1-255”表示运行失败 七、在shell脚本中如何比较两个数字 ? 可以使用 -gt 、 -lt`` 、 -ne 、 -eq`来进行比较。 八

shell 学习笔记

倖福魔咒の 提交于 2019-12-06 02:59:10
Shell 是什么 Shell 是指一种命令行解释器,是为用户和操作系统之间通信提供的一种接口 分类 图形界面shell(graphical user interface) 命令行shell (Command Line Interface ) 即CLI Shell不只是解释器,还是一种脚本语言(解释型语言) 工作模式: 互动模式 脚步模式 互动模式:由系统管理人员直接通过键盘输入命令,并等待其执行在一个命令 脚步模式:设计出一个脚步文件,将所有需要执行命令写在该文件中,由bash shell读取并执行 Shell 内建命令 bash, :, ., [, alias, bg, bind, break, builtin, cd, command, compgen, complete, continue, declare, dirs, disown, echo, enable, eval, exec, exit,export, fc, fg, getopts , hash, help, history, jobs, kill, let, local, logout, pops, printf, pushed, pwd, read,redonly, return, set, shift,shopt, source, suspend, test, times, trap, rype,

shell脚本的基本语句

耗尽温柔 提交于 2019-12-06 02:35:42
shell 变量: name=”hauzai007” echo $name 注意事项: 变量名和等号之间不能有空格 不能使用标点符号 不能使用bash里的关键字 只读变量: name=”huazai007” 关键字:readonly name 删除变量: unset name 变量类型: 1 局部变量: 局部变量在脚本或命令中定义,仅在当前shell实例中有效,其他shell启动的程序不能访问局部变量 2 环境变量: 所有的程序,包括shell启动的程序,都能访问环境变量,有些程序需要环境变量来保证其正常运行。必要的时候shell脚本也可以定义环境变量。 系统环境变量: 查看所有环境变量:env 删除环境变量:unset HAHA 举个例子: PPID:是当前进程的父进程的PID PWD:当前工作目录。 RANDO:随机数变量。每次引用这个变量会得到一个0~32767的随机数。 查看所有环境变量:env 删除环境变量:unset 用vim在/etc/profile文件中添加我们想要的环境变量 设置新的环境变量 export 新环境变量名=内容 例:export MYNAME=”LLZZ” 生效 source /etc/profile 字符串 str="abcdefg" echo ${#str} echo ${str:1:4} #表示从字符串的第二个字符开始截取,取第四个字符

Shell学习(二)Shell变量

北慕城南 提交于 2019-12-05 14:46:37
一、 Shell变量 变量的定义 例子: my_job="Learn Shell"    PS: 变量名和等号之间 不能有空格 !!! 命名只能使用英文字母,数字和下划线,首个字符不能以数字开头。 中间不能有空格,可以使用下划线(_)。 不能使用标点符号。 不能使用bash里的关键字(可用help命令查看保留关键字)。 变量的使用   使用一个定义过的变量,只要在 变量名前面加美元符号 即可。 #定义变量 my_name="zh" #使用变量(建议加上花括号区分变量边界) echo $my_name #使用变量【推荐形式】 echo ${my_name} 设置变量只读   使用 readonly 命令可以将变量定义为只读变量,只读变量的值不能被改变。 #定义变量 myUrl="www.cnblogs.com/riches" #将变量设置为“只读”状态 readonly myUrl 删除变量   使用 unset 命令可以删除变量。语法: #删除变量 unset myUrl 变量类型 局部变量 :局部变量在脚本或命令中定义,仅在当前shell实例中有效,其他shell启动的程序不能访问局部变量。 环境变量 :所有的程序,包括shell启动的程序,都能访问环境变量,有些程序需要环境变量来保证其正常运行。必要的时候shell脚本也可以定义环境变量。 shell变量

Shell脚本编程30分钟入门

牧云@^-^@ 提交于 2019-12-05 12:39:03
什么是Shell脚本 示例 看个例子吧: #!/bin/sh cd ~ mkdir shell_tut cd shell_tut for ((i=0; i<10; i++)); do touch test_$i.txt done 示例解释 第1行:指定脚本解释器,这里是用/bin/sh做解释器的 第2行:切换到当前用户的home目录 第3行:创建一个目录shell_tut 第4行:切换到shell_tut目录 第5行:循环条件,一共循环10次 第6行:创建一个test_1…10.txt文件 第7行:循环体结束 cd, mkdir, touch都是系统自带的程序,一般在/bin或者/usr/bin目录下。for, do, done是sh脚本语言的关键字。 shell和shell脚本的概念 shell是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务。Ken Thompson的sh是第一种Unix Shell,Windows Explorer是一个典型的图形界面Shell。 shell脚本(shell script),是一种为shell编写的脚本程序。业界所说的shell通常都是指shell脚本,但读者朋友要知道,shell和shell script是两个不同的概念。由于习惯的原因,简洁起见,本文出现的“shell编程”都是指shell脚本编程

Shell脚本

允我心安 提交于 2019-12-05 11:36:20
原文内容来自于LZ(楼主)的印象笔记,如出现排版异常或图片丢失等问题,可查看当前链接: https://app.yinxiang.com/shard/s17/nl/19391737/e1007d5a-4ec0-4ee7-98a0-e82989f0bffb mkdir touch newFile 或 vim newFile chmod 755 newFile rm -rf newFile sudo sh -c find / -name kb-core which bash bash特殊字符上 ; 可以在同一行上写两个或者两个以上的命令 ;; 双分号可以用于终止case选项 ' '单引号',直接认为变量只是一个字符,将会阻止STRING中所有特殊字符的解释 " "双引号",变量引用时,还是显示变量的值,将会阻止(解释)STRING中大部分特殊的字符 / 斜线/,表示路径符,/bin/bash,多个/或者//,////bin/////bash 表示的含义于单斜线含义相同, \ 反 斜线,表示转义符号,\n ,\',\", ` 反序号,反序号的命令会被优先执行;cp `mkdir back` test.sh back,表示先创建back文件夹再将test.sh拷贝到back目录下; : 冒号,一个什么都不做的命令,等价于shell中的true, while : do echo

linux shell awk 流程控制语句(if,for,while,do)详细介绍

≡放荡痞女 提交于 2019-12-05 02:40:14
  awk是gawk的链接文件,是一种优良的文本处理工具,实现格式化文本输出,是Linux和Unix现有环境中功能最强大的数据处理引擎之一。这种编程及数据操作语言的最大功能取决于一个人拥有的知识量,使用"man gawk"给出的简述为“模式扫描和处理语言”。   任何awk语句都是由 模式和动作 组成,一个awk脚本可以有多个语句,模式决定动作语句的触发条件和触发时间。   模式包含:正则表达式,/[正则表达式]/;关系运算符,<、<=、>、>=、!=、==;正则运算符,~(匹配)、!~(不匹配);赋值运算符,=、+=、-=、*=、/=、%=、**=;逻辑运算符||、&&;算术运算符+、-、*、/、++、--;其他运算符,$(用来对字段进行引用),空格(字符串连接符)。   动作包含:变量、命令、内置函数、流程控制语句。   语法:awk [选项] ' BEGIN{开始语句} 模式{动作} END{结束语句} ' [文件]。其中 BEGIN和END 是awk的关键字, 必须大写。 不过开始模块和结束模块 是可选部分,可以省略 。并且 开始语句和结束语句也是动作语句 。另外, 工作模块中的 模式和动作可以都存在,也可以二者选其一 。 如果省略模式,那么文件的所有行都执行动作;如果省略动作,表示对符合条件的行执行默认的print动作 。正因为可以二者选其一,所以一般用{}包裹动作

awk基本用法

我的未来我决定 提交于 2019-12-04 21:13:00
awk 是一种编程语言,用于在 linux/unix 下对文本和数据进行处理。 awk 数据可以来自标准输入、一个或多个文件,或其它命令的输出。 awk 通常是配合脚本进行使用, 是一个强大的文本处理工具。 awk基本知识 awk内部变量 awk模式动作 awk条件判断 awk循环语句 awk数组 toc awk基本知识 awk 的两种形式语法格式 awk [options] 'commands' filenames awk [options] -f awk-script-file filenames options -F 定义输入字段分隔符,默认的分隔符是空格或tab键(就是改变内部变量 FS,FS 来确定字段分隔符) OFS 是另一个内部变量,用来定义输出字段分隔符的。比如 $1,$3 之间有个逗号,之后输出内容之间变为空格,是因为 OFS 默认为空格 command BEGIN{} {} END{} 行处理前 行处理 行处理后 awk命令格式 ## awk 匹配文件带root的行 [root@Shell ~]# awk '/root/' /etc/passwd ## awk 对文件行进行动作处理(以冒号为字段分隔符,打印第一个字段) [root@Shell ~]# awk -F: '{print $1}' /etc/passwd ## awk 匹配文件 + 处理动作

Shell数组

♀尐吖头ヾ 提交于 2019-12-04 21:12:23
数组分类 普通数组:只能使用整数 作为数组索引(键) 关联数组:可以使用字符串 作为数组索引(键) 普通数组 关联数组 遍历数组 toc 普通数组 数组赋值方式 ## 针对每个索引进行赋值 [root@Shell ~]# array1[0]=zhao [root@Shell ~]# array1[1]=qian [root@Shell ~]# array1[2]=sun [root@Shell ~]# array1[3]=li ## 一次赋多个值 , 数组名 =( 多个变量值 ) [root@Shell ~]# array2=(zhao qian sun "songguoyou") [root@Shell ~]# array3=(1 2 3 "cobbler" [20]=zabbix) ## 将该文件中的每一个行作为一个元数赋 值给数组 array4 [root@Shell ~]# array4=(`cat /etc/passwd`) 查看普通数组赋值结果用 declare -a 命令 访问数组元数 ## 统计数组元数的个数 [root@Shell ~]# echo ${#array1[@]} 4 ## 访问数组中的第一个元素 [root@Shell ~]# echo ${array1[0]} zhao ## 从数组索引 1 开始 [root@Shell ~]# echo $