如何发送带有不带空格的参数的命令?

Rob*_*Rob 12 command-line shell bash terminal

有没有办法在没有空格的情况下在 linux 中执行带参数的命令?

cat file.txt
Run Code Online (Sandbox Code Playgroud)

需要是:

cat(somereplacementforthiswhitespace)file.txt
Run Code Online (Sandbox Code Playgroud)

Gil*_*il' 19

要是有一个变量的值是一个空格就好了……或者更一般地说,包含一个空格。

cat${IFS}file.txt
Run Code Online (Sandbox Code Playgroud)

默认值为IFS空格、制表符、换行符。所有这些字符都是空格。如果您需要单个空间,可以使用${IFS%??}.

更准确地说,这样做的原因与分词的工作方式有关。关键是,它是在替换变量值后应用的。并且分词将值中的每个字符IFS作为一个分隔符,因此通过构造,只要IFS设置为非空值,${IFS}就将单词分隔开。如果IFS长度超过一个字符,则每个字符都是一个单词分隔符。作为空格的连续分隔符被视为单个分隔符,因此扩展的结果cat${IFS}file.txt是两个单词:catfile.txt。非空白分隔符被单独处理,类似IFS=',.'; cat${IFS}file.txt,cat将接收两个参数:一个空参数和file.txt.


Rob*_*Rob 8

我找到了一种假设 shell 支持csh类似大括号扩展的方法,例如ksh, bashor yash -o brace-expand(zsh支持大括号扩展,但不像第一个参数那样与命令分组冲突):

{cat,file.txt}
Run Code Online (Sandbox Code Playgroud)

通过这种方式,您不必在参数中使用空格。