返回顶部
首页 > 资讯 > 精选 >shell脚本传参中包含有空格的参数怎么解决
  • 588
分享到

shell脚本传参中包含有空格的参数怎么解决

2023-07-05 15:07:55 588人浏览 泡泡鱼
摘要

本篇内容主要讲解“shell脚本传参中包含有空格的参数怎么解决”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“shell脚本传参中包含有空格的参数怎么解决”吧!问题描述调用并传参数给其他shell

本篇内容主要讲解“shell脚本传参中包含有空格的参数怎么解决”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“shell脚本传参中包含有空格的参数怎么解决”吧!

问题描述

调用并传参数给其他shell脚本,传的参数带有空格,被调用的shell脚本只取了这个参数的第一个单词。

代码如下

# 传参脚本 test_pre.sh[wqf@b1i10 test]$ cat test_pre.shbinFilePath="/apps/test"logpath="/apps/test"std_time="2023-01-31 18:00:00"sh $binFilePath/test.sh $std_time > $logpath/test_$(date +%Y%m%d%H%M).log 2>&1 & # 调用脚本 test.sh[wqf@b1i10 test]$ cat test.shstd_time=$1echo $std_time

测试结果如下,可以看到只取了该参数的第一个单词

[wqf@b1i10 test]$ cat test_202302061655.log
2023-01-31

原因分析

脚本的参数传递使用的是位置参数,且默认就是空格来间隔各个位置上的参数,所以只取std_time前半个部分“2023-01-31”。

解决方案

方法一:传递参数时将带上引号,引号内的所有内容都将作为一个参数,如果该参数中没有变量,单引号双引号都可以;有变量的话就用双引号。

代码如下

# 传参脚本 test_pre.sh[wqf@b1i10 test]$ cat test_pre.shbinFilePath="/apps/test"logpath="/apps/test"std_time="2023-01-31 18:00:00"sh $binFilePath/test.sh "$std_time" > $logpath/test_$(date +%Y%m%d%H%M).log 2>&1 & # 调用脚本 test.sh[wqf@b1i10 test]$ cat test.shstd_time=$1echo $std_time

测试结果

[wqf@b1i10 test]$ cat test_202302061716.log
2023-01-31 18:00:00

方法二:使用 $* 或者 $@ 传递该参数,会以一个单字符串显示所有传递的参数。不同之外在于 $* 会把所有包含的位置参数当成一个整体,而 $@ 会把所有位置参数当成单独的字段(相当于一个列表)。 本例中它们的用法一样。

代码如下

# 传参脚本 test_pre.sh[wqf@b1i10 test]$ cat test_pre.shbinFilePath="/apps/test"logpath="/apps/test"std_time="2023-01-31 18:00:00"sh $binFilePath/test.sh $std_time > $logpath/test_$(date +%Y%m%d%H%M).log 2>&1 & # 调用脚本 test.sh[wqf@b1i10 test]$ cat test.sh#取第一个参数到的所有内容(直到最后)std_time=${@:1}echo $std_time# 调用脚本 test.sh[wqf@b1i10 test]$ cat test.sh#取第一个参数到的所有内容(直到最后)std_time=${*:1}echo $std_time

以上代码测试结果都是一样的,不一一展示。

注意:假设要传的参数中含有多个空格,需要标明含有几个空格才能正确使用。比如,如果是第二个参数,该参数中含有两个空格可以写成:${@:2:3}

拓展

传递给函数的某个参数含有空格

传递给函数的某个参数含有空格,除了以上两种方法之外,还可以有方法三:直接将对应的变量在函数中使用,脚本调用,没办法使用这种方式传递变量。

假设函数脚本的代码如下

[wqf@b1i10 ~]$cat test_1.shtest_param(){std_time=$1echo "std_time:" $std_time}std_time="2023-01-31 18:00:00"echo "std_time:" $std_timetest_param $std_time

测试结果

[wqf@b1i10 ~]$ sh test_1.sh
std_time: 2023-01-31 18:00:00
std_time: 2023-01-31

使用方法三的代码如下:

[wqf@b1i10 ~]$cat test_1.shtest_param(){std_time=$std_timeecho "std_time:" $std_time}std_time="2023-01-31 18:00:00"echo "std_time:" $std_timetest_param

使用方法三的测试结果:

[wqf@b1i10 ~]$ sh test_1.sh
std_time: 2023-01-31 18:00:00
std_time: 2023-01-31 18:00:00

使用方法一的代码如下:

[wqf@b1i10 ~]$cat test_1.shtest_param(){std_time=$1echo "std_time:" $std_time}std_time="2023-01-31 18:00:00"echo "std_time:" $std_timetest_param "$std_time"

使用方法二的代码如下:

[wqf@b1i10 ~]$cat test_1.shtest_param(){std_time=${@:1}echo "std_time:" $std_time}std_time="2023-01-31 18:00:00"echo "std_time:" $std_timetest_param "$std_time"[wqf@b1i10 ~]$cat test_1.shtest_param(){std_time=${*:1}echo "std_time:" $std_time}std_time="2023-01-31 18:00:00"echo "std_time:" $std_timetest_param "$std_time"

以上测试结果都是一致,不一一展示。

到此,相信大家对“shell脚本传参中包含有空格的参数怎么解决”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

--结束END--

本文标题: shell脚本传参中包含有空格的参数怎么解决

本文链接: https://lsjlt.com/news/352721.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • shell脚本传参中包含有空格的参数怎么解决
    本篇内容主要讲解“shell脚本传参中包含有空格的参数怎么解决”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“shell脚本传参中包含有空格的参数怎么解决”吧!问题描述调用并传参数给其他shell...
    99+
    2023-07-05
  • shell脚本传参中包含有空格的参数
    目录问题描述原因分析解决方案拓展传递给函数的某个参数含有空格问题描述 调用并传参数给其他shell脚本,传的参数带有空格,被调用的shell脚本只取了这个参数的第一个单词。 代码如下...
    99+
    2023-03-22
    shell脚本传参有空格 shell传递带空格的参数
  • shell怎么传带空格的参数
    在shell中传递带有空格的参数有以下几种方法:1. 用引号包裹参数:在参数中使用引号(单引号或双引号)将参数包裹起来。例如:```...
    99+
    2023-09-16
    shell
  • ubuntu中怎么传参数到shell脚本
    本文小编为大家详细介绍“ubuntu中怎么传参数到shell脚本”,内容详细,步骤清晰,细节处理妥当,希望这篇“ubuntu中怎么传参数到shell脚本”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。ubuntu传...
    99+
    2023-07-04
  • 怎么在Shell脚本中通过参数名传递参数
    这期内容当中小编将会给大家带来有关怎么在Shell脚本中通过参数名传递参数,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。#!/bin/bashwhile getopts i:o:p:s...
    99+
    2023-06-09
  • java怎么调用shell脚本传参数
    在Java中调用shell脚本并传递参数,可以使用`ProcessBuilder`类。以下是一个示例:```javaimport j...
    99+
    2023-10-11
    java shell
  • shell中脚本参数传递的方法有哪些
    这篇文章主要介绍了shell中脚本参数传递的方法有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。方式一:$0,$1,$2..采用$0,$1,$2..等方式获取脚本命令行传...
    99+
    2023-06-09
  • 详解shell中脚本参数传递的两种方式
    方式一:$0,$1,$2.. 采用$0,$1,$2..等方式获取脚本命令行传入的参数,值得注意的是,$0获取到的是脚本路径以及脚本名,后面按顺序获取参数,当参数超过10个时(包括10个),需要使用${10},${11}....
    99+
    2022-06-04
    shell 脚本参数传递 shell 参数传递
  • 怎么使用shell脚本判断参数是否为空
    在shell脚本中,可以使用条件判断语句来判断参数是否为空。以下是一个示例:```shell#!/bin/bashif [ -z "...
    99+
    2023-09-15
    shell
  • Shell脚本中怎么判断输入参数的个数
    这期内容当中小编将会给大家带来有关Shell脚本中怎么判断输入参数的个数,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。$#代表了命令行的参数数量,可以看以下实例:if [ $# != 1 ] ; then...
    99+
    2023-06-09
  • Python脚本开发中的命令行参数及传参示例详解
    目录sys模块argparse模块Python中的正则表达式 正则表达式简介Re模块常用的匹配规则sys模块 在使用python开发脚本的时候,作为一个运维工具,或者是其他...
    99+
    2024-04-02
  • 如何理解Shell脚本中的位置变量参数
    这篇文章主要介绍“如何理解Shell脚本中的位置变量参数”,在日常操作中,相信很多人在如何理解Shell脚本中的位置变量参数问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何理解Shell脚本中的位置变量参数...
    99+
    2023-06-09
  • 使用Shell怎么对包含空格的文本进行遍历
    这期内容当中小编将会给大家带来有关使用Shell怎么对包含空格的文本进行遍历,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。shell遍历文件有时候要对某个文件夹下面的所有文件做同样的处理,比如对每个文件统...
    99+
    2023-06-14
  • 怎么在Shell脚本中使用for循环遍历参数
    这篇文章将为大家详细讲解有关怎么在Shell脚本中使用for循环遍历参数,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。1.当一个脚本需要传入的参数较多时,可以使用for循环进行参数遍历示例:...
    99+
    2023-06-09
  • vue中formdata传值给后台时参数为空怎么解决
    这篇文章主要介绍了vue中formdata传值给后台时参数为空怎么解决的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇vue中formdata传值给后台时参数为空怎么解决文章都会有所收获,下面我们一起来看看吧。f...
    99+
    2023-06-30
  • 前后台传递参数中出现+、-、=、%、&、#、空格等字符的解决思路
    一、描述问题 前后台传输数据多样化,可能会出现特殊字符的情况,比如传递的参数中含有+、空格、=、%等字符,遇到这样的情况我们该如何解决呢? 二、问题分析 前后台特殊字符对其编码,原因可能是这些特殊字符对于前后台传递参数的时候,有其特殊的用途...
    99+
    2023-10-06
    java 服务器 html
  • Shell脚本中判断输入变量或者参数是否为空的方法
    1.判断变量 read -p "input a word :" word if [ ! -n "$word" ] ;then echo "you have not input a word!...
    99+
    2022-06-04
    变量 为空 脚本
  • Shell脚本中的位置变量参数(特殊字符)实例讲解
    $# : 传递到脚本的参数个数 $* : 以一个单字符串显示所有向脚本传递的参数。与位置变量不同,此选项参数可超过 9个 $$ : 脚本运行的当前进程 ID号 $! : 后台运行的最后一个进程的进程 ID号...
    99+
    2022-06-04
    变量 脚本 实例
  • mybatisplus中的xml对象参数传递问题怎么解决
    这篇“mybatisplus中的xml对象参数传递问题怎么解决”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“mybatisp...
    99+
    2023-07-04
  • springboot接收http请求,解决参数中+号变成空格的问题
    目录springboot接收http请求,参数中+号变成空格小插曲解决get请求中的问题解决post请求中的问题SpringBoot问题笔记:http请求参数含有特殊符号[]解决方法...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作