linux命令行参数含空格,linux-具有命令行参数和空格的Perl脚本
我觉得我在这里似乎遗漏了一些明显的东西,但是我似乎无法弄清楚发生了什么.我有一个从C代码调用的perl脚本.脚本参数是这样的:
my_script "/some/file/path" "arg" "arg with spaces" "arg" "/some/other/file"
当我在Windows中运行它时,Perl正确地将其标识为5个参数,而当我在SunOS Unix计算机上运行它时,它标识为8,将带有空格的arg拆分为单独的args.
不知道它是否有任何区别,但是在Windows中,我像这样运行它:
perl my_script
在Unix中,我只是将其作为可执行文件运行,如上图所示.
知道为什么Unix无法正确管理该参数吗?
编辑:
这是调用perl脚本的代码:
char cmd[1000];
char *script = "my_script";
char *argument = "\"arg1\" \"arg2\" \"arg3 with spaces\" \"arg4\" \"arg5\"";
sprintf( cmd, "%s %s >1 /dev/null 2>&1", script, arguments);
system( cmd );
并非如此,因为我动态地构建了参数字符串,但这是要点.
另外,这是我的代码,用于读取以下参数:
($arg1, $arg2, $arg3, $arg4, $arg5) = @ARGV;
我知道这很荒谬,但是该脚本只能从C应用程序运行,因此不需要任何更复杂的事情.
解决方法:
想必
system("my_script \"/some/file/path\" \"arg\" \"arg with spaces\" \"arg\" \"/some/other/file\");
导致所有内容都经过重击(因为需要解释shebang行,吃掉您传递的引号).再次,大概可以通过直接调用perl而不是依靠shell来找到它来避免该问题(尽管如果路径上的perl与shebang线上提供的perl不同,则可能会出现问题).
更新:
鉴于您:
char *argument = "\"arg1\" \"arg2\" \"arg3 with spaces\" \"arg4\" \"arg5\"";
您可能要尝试:
char *argument = "\\\"arg1\\\" \\\"arg2\\\" \\\"arg3 with spaces\\\" \\\"arg4\\\" \\\"arg5\\\"";
另一个更新:
感谢您接受我的回答,但是,我的整个理论可能是错误的.
我在GNU bash中尝试了上述参数的双反版本,版本为4.0.28(2)-release(i686-pc-linux-gnu),但最终通过了
[sinan@kas src]$./t
'"arg1"'
'"arg2"'
'"arg3'
'with'
'spaces"'
'"arg4"'
'"arg5"'
而最初的论点就像一个魅力.我对此有些疑惑.也许SUN上的外壳不是bash,或者可能正在发生其他情况.
标签:linux,perl
来源: https://codeday.me/bug/20191024/1920458.html
linux命令行参数含空格,linux-具有命令行参数和空格的Perl脚本相关推荐
- linux命令行参数含空格,Linux的命令行参数风格
在Linux中,几乎所有程序都会提供几个命令行选项,有些程序提供的命令行参数多到咂舌!这样做使得程序的运行非常灵活,而且程序的配置信息可以由脚本指定,这对于作为管道或过滤器的程序尤其重要.有三种约定可 ...
- Linux源码研究-用户管理员手册-内核命令行参数
下面的列表是__setup(), core_param()和module_param()宏实现的内核参数,内核从命令-开始解析参数,如果参数不被识别,也不包含".",参数会被用来启 ...
- linux读取命令行参数,Linux学习笔记(五)—— Linux命令行参数
一.客户端输入 脚本执行的过程是对数据变量进行处理的过程,之前在脚本中处理的数据都是静态数据,而不是和客户端交互的动态数据.在大多数情况下脚本执行过程需要和客户端进行交互,用来获得脚本处理的数据,这些 ...
- 命令行收集(DOS/Linux/nc/xscan/xsniffer)
#1 一: net use \\ip\ipc$ " " /user:" " 建立IPC空链接 net use \\ip\ipc$ "密码" ...
- linux shell 宏定义_Linux系统和Shell命令行简介,走上数据分析之路
122Linux系统和Shell命令行简介,走上数据分析之路 本节作者:刘永鑫 中国科学院遗传与发育生物学研究所 版本1.0.2,更新日期:2020年8月31日 本项目永久地址:https://git ...
- Linux学习记录-----《快乐的Linux命令行》.
之前自学python的时候一直用的Win7,没想过,也有点怕使用Linux,可能人对未知的东西都有点恐惧,但是,但是,学了4个多月,退无可退了,不管是网站的部署,还是基于后端工作的需求,Linux的学 ...
- linux命令行大全 笔记,《Linux命令行大全》读书笔记
8种机械键盘轴体对比 本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选? shell就是一个程序,它接受从键盘输入的命令,然后把命令传递给操作系统执行.当使用图像用户界面时,我们需要一个叫做终端 ...
- linux获取偶数行内容,linux命令(39):shell 打印偶数行,奇数行 ,行号
awk 命令: 1. 打印行号和内容: awk '{print NR":"$0}' 2. 输出:偶数行和奇数行到文件 awk '{print $0.txt > NR%2.tx ...
- linux 命令窍门,不容错过的Linux命令行窍门
高效地使用命令行是一个Linux系统管理员技能的重要组成部分.在本文中,我们提供了五个很酷甚至略显古怪的Linux命令行技巧,可以帮你更有效地管理你的Linux系统. More=Less 在Linux ...
最新文章
- opencv拖动进度条_OpenCV GUI基本操作,回调函数,进度条,裁剪图像等
- C/S与B/S架构的区别和优缺点
- 002_SpringBoot整合Servlet
- egg.js java 生产数据_Egg 2.15.0 发布,阿里开源的企业级 Node.js 框架
- SSM:Spring整合MyBatis框架时出现 java.lang.AbstractMethodError: org.mybatis.spring.transaction.SpringManaged
- 负载均衡工具 haproxy 集群安装部署完整流程
- Java类类getResourceAsStream()方法及示例
- Python学习笔记14(socket编程)
- mysql中添加中文存储和显示功能
- Xcode8报错:No code signature found
- multisim10元件库介绍
- 神经网络打印模型参数及参数名字和数量
- 【云原生|实践指北】5:真实业务场景下云原生项目落地实践学习
- 归并排序及“归并”思想的应用
- javabeans基础
- [转]忘记开机密码怎么办
- hashmap中的key是有序的么_HashMap是无序的
- 基于SpringBoot的实习管理系统
- config配置中心
- 怎样在自己的安卓软件中加入广告
热门文章
- 计算机网络-信道的极限容量
- 【Linux 内核 内存管理】优化内存屏障 ① ( barrier 优化屏障 | 编译器优化 | CPU 执行优化 | 优化屏障源码 barrier 宏 )
- 【Google Play】声明广告权限 ( you must declare the AD_ID Permission when your app targets Android 13 )
- 【Android 逆向】Android 进程注入工具开发 ( Visual Studio 开发 Android NDK 应用 | Visual Studio 中 SDK 和 NDK 安装位置 )
- 【Flutter】Dart 函数 ( 函数构成 | 私有函数 | 匿名函数 | 函数总结 )
- 【Java 网络编程】TCP 简介
- 【Android 应用开发】Paint 渲染 之 BitmapShader 位图渲染 ( 渲染流程 | CLAMP 拉伸最后像素 | REPEAT 重复绘制图片 | MIRROR 绘制反向图片 )
- PHP手机号中间四位用星号*代替显示
- Hadoop前期准备--centos7
- 好程序员web前端分享Nodejs学习笔记之Stream模块