使用撇号或引号从终端传递命令行参数

Cht*_*ect 2 bash command-line-arguments

我看到过有关将带引号的参数传递给 shell 脚本的问题(例如,这个问题)。

我的情况略有不同:

我正在从 bash 终端向我的 java 程序传递一个参数。可能的参数数量是有限的(准确地说是 20 个),其中之一是“阿尔茨海默病”。但如果我输入

java -cp ... myclass --term alzheimer's
Run Code Online (Sandbox Code Playgroud)

这就是我所看到的: 在此输入图像描述

..然后我必须按 ctrl+C 退出它。

如果它是一个包含所有字母数字字符的单词,则一切正常。对于这种带有撇号的情况我该怎么办?

che*_*ner 5

引用它;当单个撇号本身未加引号时,将被视为带引号的字符串的开头。bash正在等待您完成引用的字符串。

java -cp ... myclass --term "alzheimer's"
Run Code Online (Sandbox Code Playgroud)

或者

java -cp ... myclass --term alzheimer\'s
Run Code Online (Sandbox Code Playgroud)