Linux——使用命令行参数管理环境变量

news2024/11/23 15:20:26

目录

使用命令行参数获取用户在DOS命令行输入的指令:

        方法:代码如下:

使用命令行参数获取并打印部分或者整体环境变量的方法: 

方法1:

 运行结果:

方法2:使用外部链接environ:


使用命令行参数获取用户在DOS命令行输入的指令:

        方法:代码如下:

 

 上方代码解析:
        argc : 命令行传入参数的总个数
        argv : char* argv[ ]是一个指针数组,里面存放的元素全是指针,这些指针会指向所有的命令行参数,例如:argv[0]指向程序的全路径名(这个是固定的),argv[1]指向在DOS命令行中执行程序名后的第一个字符串,argv[2]指向第二个DOS命令行输入的第二个子字符串。

        

        也就是说下标0位置处的argv指向的永远是指向该文件的路径名,剩下的从下标1开始的元素指针指向的是文件后面的各个指令。

编译后运行该结果: 

 

        如上,在Dos命令行中只输入了该程序的路径名,所以argc的个数为1,那么argv[0]指向的就是程序的全路径名。 

 当我们在DOS命令行中不仅运行该程序,还在其后面+选项:

 

        解析:实际上我们在命令行上输入的命令,是一个长字符串,例如:“Is -a -d”,系统会将它们会分隔成一个个小的子字符串,即”Is”然后被存放在char* argv[ ]这个指针数组中,所以argv[0]=该程序;argv[1]=ls指令,argv[2]=“-a”指令。argc是int型,指的是子字符串的个数。

        假如argc数值为10,那么数组从下标1索引处开始会有9个元素指针分别指向9个子字符串。直到argv数组遍历到最后一个元素指针的下一个指针处,发现该指针指向NULL,停止遍历,终止循环。

 那么可根据int main中的命令行参数去修改上面那种写法: 

        针对方法1的写法有2种修改方式,一种是使用argv[i]可以直接做循环的限制条件;另一种就是使用*(argv+i) ——解引用指针位置。

既然我们可以用int main()的命令行参数去获取用户在DOS命令下输入的指令,接下来就是重点了:

        那么我们就可以根据用户输入的DOS指令,通过数组去获取用户输入的每一个子字符串,通过这些字符串去执行特定的命令,如下:

 

 

  通过写好该代码后,编译运行:

 

 

  结果解析:数组argv[0]获取到该程序的全路径名,argv[1]获取到用户输入的-a选项,根据-a选项可以执行特定的作用。

        就好比我们输入ls -a,Shell操作系统也是通过数组argv[0]去获取到ls指令(ls的实现也是代码文件)的路径名,argv[1]获取到-a选项,使用if语句与strcmp比较函数判定,然后执行特定的作用,即显示当前路径下所有的隐藏文件,这就是ls指令下 -a选项的作用。

剩下的案例也是一样的。

 


使用命令行参数获取并打印部分或者整体环境变量的方法: 

方法1:

        在int main的命令行参数种,再多加一个char* env[] ,它的类型也是字符指针,该数组中的每一个元素都指向环境变量的一行内容。我们还是利用循环去遍历env数组中的每一个元素,进而获取到环境变量中的所有内容!

 运行结果:


方法2:使用外部链接environ:

 

代码:

 

运行结果:

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/579819.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何开发背包系统?

UE5 插件开发指南 前言0 背包数据结构1 背包管理组件2 背包UI显示前言 相信大家对于背包系统并不陌生,谁还没有玩过几款游戏呢?游戏中的背包都是大同小异的,朴素的功能就是存放我们获取到的物品,高级一点就是要有物品分类,便于玩家刷选背包中的物品,能够显示玩家拥有的货…

2023 牛津大学博士后申请指南

牛津大学是全球著名的高等教育机构,其博士后项目备受瞩目。为了帮助申请者更好地了解牛津大学博士后申请流程,本文将介绍该校博士后申请指南的相关内容。一、申请条件首先,申请者必须已经获得博士学位或即将完成博士学位,并具有相…

《数据库应用系统实践》------ 报刊销售系统

系列文章 《数据库应用系统实践》------ 报刊销售系统 文章目录 系列文章一、需求分析1、系统背景2、 系统功能结构(需包含功能结构框图和模块说明)3.系统功能简介 二、概念模型设计1.基本要素(符号介绍说明&#xff…

k8s 对已完成job自动清理

job在处理完一个任务以后,状态会变成Completed,job在状态为Completed的时候默认不会自动清理的,还会继续占用系统资源。 TTL-after-finished控制器 kubernetes中有专门的控制器可以自动清理已完成的job,就是TTL-after-finished控制器。 TTL…

数据中心产业如何变革?中国数字能源生态大会这些观点值得一读

对于数据中心产业,这是一个最好的时代。数字经济的蓬勃发展,推动产业数字化、企业数字化转型步入纵深阶段,大幅增加数据中心等基础设施的需求,让数据中心产业迎来前所未有的市场良机。 与此同时,对于数据中心产业&…

【备战秋招】每日一题:4月1日美团春招(二批)第一题:题面+题目思路 + C++/python/js/Go/java带注释

2023大厂笔试模拟练习网站(含题解) www.codefun2000.com 最近我们一直在将收集到的各种大厂笔试的解题思路还原成题目并制作数据,挂载到我们的OJ上,供大家学习交流,体会笔试难度。现已录入200道互联网大厂模拟练习题&…

使用render平台免费部署自己的ChatGPT

📋 个人简介 💖 作者简介:大家好,我是阿牛,全栈领域优质创作者。😜📝 个人主页:馆主阿牛🔥🎉 支持我:点赞👍收藏⭐️留言&#x1f4d…

解决websocket在部署到服务器https下无法使用的问题

目录 一、问题 1.1 问题描述 1.2 问题详细描述 二、解决 2.1 https下的链接类型 2.2 修改Nginx的配置 一、问题 1.1 问题描述 一个小项目中使用到了websocket,这个websocket在本地完全是完全正常运行的,不管是前后台的信息通讯 还是 异常报错接收…

JavaScript教程(高级)

面向对象编程介绍 两大编程思想 (1)、 面向过程编程: (缩写 POP)( Process-oriented programming)面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现&am…

【PowerQuery】M语言的使用产品和使用场景

当然PowerQuery的M语言应用场景不只是引用在PowerBI和Excel中,它具有广泛的应用场景。目前我们可以在以下产品的使用场景中应用到M语言。 Excel PowerQuery应用Excel通过M语言可以实现整体数据的清洗和重构。  PowerBI 的PowerQuery应用 PowerBI也是通过M语言来实现数据…

VSCODE 插件推荐

文章目录 项目管理Project Manager markdownmarkdown-pdfPaste ImageMarkdown Preview Enhanced 笔记Notes 思维导图vscode-mindmap 开发Visual Studio IntelliCode GitHub Repositories 项目管理 Project Manager 以下是项目管理器提供的一些功能: 将任何文件夹…

JS中this的指向

JS中this的指向 本文目录 JS中this的指向全局上下文(Global Context)函数上下文(Function Context)普通函数调用作为对象的方法调用构造函数调用箭头函数回调函数 事件处理器上下文(Event Handler Context)…

find_package深度解析及实例应用

1. 检索模式 1.1 module模式 在这个模式下会查找一个名为find.cmake的文件,首先去CMAKE_MODULE_PATH指定的路径下去查找,然后去cmake安装提供的查找模块中查找(安装cmake时生成的一些cmake文件)。找到之后会检查版本,…

大模型全情投入,低代码也越来越清晰

众所周知,不少互联网企业在大模型领域全情投入。那么在这阵阵浪潮中,我们可以观察到什么样的“众生相”? 今年3月以来,国内已有超过20家企业入局大模型赛道。从百度“文心一言”、阿里“通义千问”的发布,华为“盘古”…

解决Kali的Python版本切换问题以及pip2安装问题

问题背景 需要使用Python2版本运行脚本,但是Kali系统自从2021后Python2,3共存 解决方案 (1)打开终端输入以下命令,但是需要有root权限 update-alternatives --install /usr/bin/python python /usr/bin/python2 100…

k8s介绍

目录 1:k8s概念 2:为什么引入k8s和k8s特性 2.1 为什么要引入k8s: 2.2 k8s特性 3 K8S架构 1:k8s概念 k8s官方网站:Kubernetes Kubernetes 是一个可移植、可扩展的开源平台,用于管理容器化的工作负载和…

数据库基础——5.运算符

这篇文章我们来讲一下SQL语句中的运算符操作。 说点题外话:SQL本质上也是一种计算机语言,和C,java一样的,只不过SQL是用来操作数据库的。在C,java中也有运算符,这两种语言中的运算符和数学中的运算符差距不…

【形形色色的卷积】差分卷积

文章目录 0. 前言1. 中心差分卷积2. 像素差分卷积3. 参考 0. 前言 普通卷积不能显式地提取图像的梯度信息,因此不能较好地描述细粒度的纹理信息,在人脸活体检测、边缘检测等对细粒度纹理信息敏感的任务中难以取得理想的结果。针对上述问题,O…

基于STM32的定时器--定时中断(HAL库)

基于STM32的定时器--定时中断(HAL库) 介绍引言定时器介绍 实例项目介绍准备设计流程 介绍 引言 本文旨在介绍如何使用STM32CubeMX配置KEIL 5开发一个每10us定时器中断触发一次的项目。帮助初学者入门STM32的定时器使用。 定时器介绍 定时器是STM32微…

2.信息安全之常用黑客攻击手段

1.自己也可以建CA系统 winserver2003 https 准备2台机器xpsp3(证书,Web),在同一网段,https通讯 –>网络内部网络(同一网段) (iso镜像才有网络和服务…这个镜像已 经安装好了(不能乱删)) sp1 2 3 的网络 改 tcp/ip 属性 ip地址112.26.0.1 和子网掩码255.0.0.0(与ip地址对应,…