首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何将带有双引号的空字符串传递给bash脚本?

如何将带有双引号的空字符串传递给bash脚本?
EN

Stack Overflow用户
提问于 2014-04-26 00:22:11
回答 6查看 21.9K关注 0票数 15

我正在尝试编写一个脚本,它将在命令行中接受带有双引号的空字符串作为附加参数。我希望脚本将这些参数与双引号空字符串一起传递,但命令解释器似乎将这种参数解释为空字符串,并删除引号。有办法这样做吗?

作为一个简单的例子,我将在文件script.sh中获得:

代码语言:javascript
运行
复制
#!/bin/bash
/home/myapp $1 $2

如果我按提示运行:

代码语言:javascript
运行
复制
$ ./script.sh arg1 ""

脚本只执行"/home/myapp arg1",但忽略/忽略第二个参数("")。我希望它保留这个空字符串,而不是执行:/home/myapp arg1 ""

EN

Stack Overflow用户

发布于 2014-04-26 00:36:04

补充Kaz's helpful explanation

如果您将"$@" 传递给,则 空的参数将被传递,太了。

代码语言:javascript
运行
复制
#!/bin/bash

/home/myapp "$@"

通过"$@"传递的原始参数与传入的参数完全相同-即使是作为空字符串传递的参数(例如,''"""$someVar"传递,其中变量someVar未设置或包含空字符串)。

如果可能存在,则多个参数()

代码语言:javascript
运行
复制
#!/bin/bash

# Copy the (up to) first 2 arguments - whether they're empty strings or not -
# to a separate array.
firstTwo=("${@:1:2}") 
shift; shift  # Remove the first 2 arguments from the arguments array.

# Invoke the app with the (up to) first 2 arguments stored in the new array.
/home/myapp "${firstTwo[@]}"

# Process the remaining arguments, if any.
for a; do
  echo "remaining: [$a]"
done
票数 3
EN
查看全部 6 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23305076

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档