将命令输出分配给shell变量

Ric*_*eek 8 linux tcsh

我试图将剪切命令的输出分配给变量,但是我遇到了一个奇怪的问题.我正在使用tcsh shell.

$echo $0
tcsh
Run Code Online (Sandbox Code Playgroud)

这是我正在运行的命令:

$set a=`cut -f2 -d' ' test.txt`
Missing }.    //This is the output I am getting
Run Code Online (Sandbox Code Playgroud)

现在该文件非常简单(这不是我正在处理的文件,但我将问题减少到了这一点.)

的test.txt:

{ {corner
Run Code Online (Sandbox Code Playgroud)

而已!这是文件.如果我将文件更改为:

{ {corner}
Run Code Online (Sandbox Code Playgroud)

语句有效,但"a"获得以下值:

$echo $a
corner   //Please note its not {corner} but corner
Run Code Online (Sandbox Code Playgroud)

因此我认为shell试图{corner 作为一个命令执行 ,因为它缺少关闭括号shell抱怨.有谁知道它为什么会出现这种行为?我的理解是它应该只将cut的输出分配给变量,但看起来像递归分配它!新手

rin*_*rer 7

你必须用双引号括起来

set a="`cut -f2 -d' ' test.txt`"
Run Code Online (Sandbox Code Playgroud)

同样适用于诸如此类的用途 echo

echo "$a"
Run Code Online (Sandbox Code Playgroud)

产量

{corner
Run Code Online (Sandbox Code Playgroud)