在 {} 中定义的带有空白的变量无法工作

问题描述 投票:0回答:1

我有一个文件 A.f,其中仅包含一行

Check something: {nameA nameB nameC}

然后,我定义一个名为 var_A 的变量

set var_A = `grep "Check something" A.f | head -n 1`

但是此设置失败,错误消息为

Missing }.

这让我很困惑,所以我做了一个测试:

echo {0}.    # 0
echo {0 1}.  # Missing }.
echo {0 }.   # Missing }.
echo "{0 1}" # {0,1}

这让我更困惑,但我可以发现 cshell 中 {} 的任何含义都只是将 {} 作为列表形式的简写。

有谁知道为什么{}不能包含任何空白吗?

linux shell csh
1个回答
0
投票

有谁知道为什么{}不能包含任何空白吗?

请参阅手册页部分 文件名替换

如果一个单词包含...`{'...,那么该单词就是文件名替换的候选者...

请注意,未加引号的单词不能包含任何空格。 我们不能指望能够使用不带引号的特殊字符,所以让我们引用它们:

set var_A = "`grep Check\ something A.f | head -n 1`"
© www.soinside.com 2019 - 2024. All rights reserved.