linux - shell脚本引号消失

标签 linux shell

我正在尝试编写一个 shell 脚本,并获取输入参数,例如:

./test abc def ghi

如果脚本中有echo $*,它会列出参数,但是引号会消失,比如

./test abc "def ghi" --> abc def ghi

我不想以 ./test abc\"def ghi\" 的形式运行带有反斜杠的命令,尽管它可以解决这个问题。 echo $2 不会解析里面的引号,比如 ./test abc "def ghi "jkl"mno"

还有什么办法可以解决吗?谢谢:)

最佳答案

您可以通过将双引号括在单引号内来实现,如下所示:

./test abc '"def ghi"'

解释:

由单引号引起来的所有内容都被 shell 解释为字符串文字。这是关于 Strong Quoting vs. Weak Quoting 的更多信息.

关于linux - shell脚本引号消失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13715302/

相关文章:

PHP 从 shell_exec 中删除隐藏字符

c++ - vkGetPhysicalDeviceQueueFamilyProperties 段错误

linux - 从 shell 脚本传递日期到查询

c++ - 终端中光标闪烁的删除,如何?

linux - 在 Linux 上安装 Jenkins,执行 shell 命令给出权限被拒绝。

linux - yum 缓存中的镜​​像

Linux 错误上的 Python 3.6 tkinter 窗口图标

xml - 使用 xmlstarlet 替换 XML 中的标记值

shell - 一个月中的一周

linux - 将 .org 指令与 .data 部分 : In connection with ld 中的数据一起使用