广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >shell脚本传参中包含有空格的参数
  • 963
分享到

shell脚本传参中包含有空格的参数

shell脚本传参有空格shell传递带空格的参数 2023-03-22 18:03:11 963人浏览 薄情痞子
摘要

目录问题描述原因分析解决方案拓展传递给函数的某个参数含有空格问题描述 调用并传参数给其他shell脚本,传的参数带有空格,被调用的shell脚本只取了这个参数的第一个单词。 代码如下

问题描述

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

代码如下

# 传参脚本 test_pre.sh
[wqf@b1i10 test]$ cat test_pre.sh
binFilePath="/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

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

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

原因分析

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

解决方案

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

代码如下

# 传参脚本 test_pre.sh
[wqf@b1i10 test]$ cat test_pre.sh
binFilePath="/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

测试结果

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

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

代码如下

# 传参脚本 test_pre.sh
[wqf@b1i10 test]$ cat test_pre.sh
binFilePath="/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.sh
test_param(){
std_time=$1
echo "std_time:" $std_time
}

std_time="2023-01-31 18:00:00"
echo "std_time:" $std_time
test_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.sh
test_param(){
std_time=$std_time
echo "std_time:" $std_time
}

std_time="2023-01-31 18:00:00"
echo "std_time:" $std_time
test_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.sh
test_param(){
std_time=$1
echo "std_time:" $std_time
}

std_time="2023-01-31 18:00:00"
echo "std_time:" $std_time
test_param "$std_time"

使用方法二的代码如下:

[wqf@b1i10 ~]$cat test_1.sh
test_param(){
std_time=${@:1}
echo "std_time:" $std_time
}

std_time="2023-01-31 18:00:00"
echo "std_time:" $std_time
test_param "$std_time"


[wqf@b1i10 ~]$cat test_1.sh
test_param(){
std_time=${*:1}
echo "std_time:" $std_time
}

std_time="2023-01-31 18:00:00"
echo "std_time:" $std_time
test_param "$std_time"

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

到此这篇关于shell脚本传参中包含有空格的参数的文章就介绍到这了,更多相关shell传递带空格的参数内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

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

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

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

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • shell脚本传参中包含有空格的参数
    目录问题描述原因分析解决方案拓展传递给函数的某个参数含有空格问题描述 调用并传参数给其他shell脚本,传的参数带有空格,被调用的shell脚本只取了这个参数的第一个单词。 代码如下...
    99+
    2023-03-22
    shell脚本传参有空格 shell传递带空格的参数
  • shell脚本传参中包含有空格的参数怎么解决
    本篇内容主要讲解“shell脚本传参中包含有空格的参数怎么解决”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“shell脚本传参中包含有空格的参数怎么解决”吧!问题描述调用并传参数给其他shell...
    99+
    2023-07-05
  • shell怎么传带空格的参数
    在shell中传递带有空格的参数有以下几种方法:1. 用引号包裹参数:在参数中使用引号(单引号或双引号)将参数包裹起来。例如:```...
    99+
    2023-09-16
    shell
  • shell中脚本参数传递的方法有哪些
    这篇文章主要介绍了shell中脚本参数传递的方法有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。方式一:$0,$1,$2..采用$0,$1,$2..等方式获取脚本命令行传...
    99+
    2023-06-09
  • ubuntu中怎么传参数到shell脚本
    本文小编为大家详细介绍“ubuntu中怎么传参数到shell脚本”,内容详细,步骤清晰,细节处理妥当,希望这篇“ubuntu中怎么传参数到shell脚本”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。ubuntu传...
    99+
    2023-07-04
  • 怎么在Shell脚本中通过参数名传递参数
    这期内容当中小编将会给大家带来有关怎么在Shell脚本中通过参数名传递参数,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。#!/bin/bashwhile getopts i:o:p:s...
    99+
    2023-06-09
  • Shell脚本传参数的方法介绍
    本篇内容介绍了“Shell脚本传参数的方法介绍”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、接收固定长度的参数代码如下:[root@sv...
    99+
    2023-06-09
  • Shell脚本通过参数名传递参数的实现代码
    平常在写shell脚本都是用$1,$2…这种方式来接收参数,然而这种接收参数的方式不但容易忘记且不易于理解和维护。linux常用的命令都可指定参数名和参数值,然而我们怎样才能给自己的shell脚本也采用参数名和参数值这样...
    99+
    2022-06-04
    Shell 参数名传递参数 Shell 传递参数
  • Shell脚本传递参数的方法对比
    这篇文章主要介绍“Shell脚本传递参数的方法对比”,在日常操作中,相信很多人在Shell脚本传递参数的方法对比问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Shell脚本传递参数的方法对比”的疑惑有所帮助!...
    99+
    2023-06-09
  • Shell脚本函数传递参数的实现方法
    如何传递参数到Shell脚本函数 通常,在其他脚本语言中,您可以将参数和参数作为function_name(parameter1, parameter2,…)传递给函数,这在shell脚本函数中不支持。在s...
    99+
    2022-07-29
    Shell函数传递参数 Shell传递参数
  • 详解shell中脚本参数传递的两种方式
    方式一:$0,$1,$2.. 采用$0,$1,$2..等方式获取脚本命令行传入的参数,值得注意的是,$0获取到的是脚本路径以及脚本名,后面按顺序获取参数,当参数超过10个时(包括10个),需要使用${10},${11}....
    99+
    2022-06-04
    shell 脚本参数传递 shell 参数传递
  • Shell脚本传递参数的3种方法比较
    #!/bin/bash #extracting command text_text_text_line options as parameters help_info(){ echo "NAME" ...
    99+
    2022-06-04
    种方法 脚本 参数
  • 处理Shell脚本中带有空格的变量(bash脚本)
    本篇主要介绍bash脚本中对于含空格文件处理方式。 在批量处理音频文件时候使用下面的脚本发现含有空格的文件名并不能被处理; #$1: 遍历的文件夹 rootDir=$1 cd $rootDir allAudioFil...
    99+
    2022-06-04
    shell 空格变量 bash脚本变量
  • Shell脚本中怎么判断输入参数的个数
    这期内容当中小编将会给大家带来有关Shell脚本中怎么判断输入参数的个数,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。$#代表了命令行的参数数量,可以看以下实例:if [ $# != 1 ] ; then...
    99+
    2023-06-09
  • Shell脚本中判断输入参数个数的方法
    $#代表了命令行的参数数量,可以看以下实例: if [ $# != 1 ] ; then echo "USAGE: $0 TABNAME" echo " e.g.: $0 CDR_CALL_200...
    99+
    2022-06-04
    脚本 个数 参数
  • Python脚本开发中的命令行参数及传参示例详解
    目录sys模块argparse模块Python中的正则表达式 正则表达式简介Re模块常用的匹配规则sys模块 在使用python开发脚本的时候,作为一个运维工具,或者是其他...
    99+
    2022-11-13
  • Shell脚本中判断输入变量或者参数是否为空的方法
    1.判断变量 read -p "input a word :" word if [ ! -n "$word" ] ;then echo "you have not input a word!...
    99+
    2022-06-04
    变量 为空 脚本
  • 如何理解Shell脚本中的位置变量参数
    这篇文章主要介绍“如何理解Shell脚本中的位置变量参数”,在日常操作中,相信很多人在如何理解Shell脚本中的位置变量参数问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何理解Shell脚本中的位置变量参数...
    99+
    2023-06-09
  • 如何处理Shell脚本中带有空格的变量
    小编给大家分享一下如何处理Shell脚本中带有空格的变量,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!在批量处理音频文件时候使用下面的脚本发现含有空格的文件名并不...
    99+
    2023-06-09
  • Shell脚本中的位置变量参数(特殊字符)实例讲解
    $# : 传递到脚本的参数个数 $* : 以一个单字符串显示所有向脚本传递的参数。与位置变量不同,此选项参数可超过 9个 $$ : 脚本运行的当前进程 ID号 $! : 后台运行的最后一个进程的进程 ID号...
    99+
    2022-06-04
    变量 脚本 实例
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作