linux - 将命令输出分配给 shell 变量

标签 linux tcsh

我试图将 cut 命令的输出分配给一个变量,但是我遇到了一个奇怪的问题。 我正在使用 tcsh 外壳。

$echo $0
tcsh

这是我正在运行的命令:

$set a=`cut -f2 -d' ' test.txt`
Missing }.    //This is the output I am getting

现在文件真的很简单(好吧,这不是我正在处理的文件,但我将问题简化为这个。)

测试.txt:

{ {corner

就是这样!这是文件。如果我将文件更改为:

{ {corner}

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

$echo $a
corner   //Please note its not {corner} but corner

因此我认为 shell 正在尝试执行 {corner 作为一个命令,因为它缺少右大括号 shell 提示。有谁知道为什么它会表现出这种行为?我的理解是它应该只将 cut 的输出分配给变量,但看起来它是递归分配的! 新手

最佳答案

必须用双引号括起来

set a="`cut -f2 -d' ' test.txt`"

同样适用于 echo 等用途

echo "$a"

输出

{corner

关于linux - 将命令输出分配给 shell 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9936598/

相关文章:

linux - Shell脚本密码暴力破解

linux - 在 EC2 实例上使用用户数据脚本运行 ansible-playbook

linux - jobs -l 命令无法使用 csh 写入文件

linux - 使用 if else 在文件中搜索模式的 Shell 脚本

perl - 如何使用 perl one-liner 作为别名

shell - 在 csh 中使用列表设置环境变量

c - 为系统调用编写 glibc api

c++ - 制作 : c: command not found

c - 内核模式访问用户空间变量

random - tcsh 来自/dev/random 和/dev/urandom 的随机数