我有一个数据列表
%cat data
a
b[1]
c[2]
d
我尝试使用以下命令回显每一行:
%foreach aa ( `cat data` )
foreach? echo $aa
foreach? end
a
echo: No match
有人可以解释一下echo cmd发生了什么以及如何修复它?谢谢。
答案 0 :(得分:4)
当你这样做时
echo $aa
和$aa
包含b[1]
,shell在扩展变量值后会尝试处理[
和]
元字符。由于您(可能)当前目录中没有任何内容与b[1]
匹配,因此会出现错误。
您需要引用变量引用。取代
echo $aa
由
echo "$aa"
或
echo $aa:q
(:q
语法特定于csh和tcsh;双引号在大多数shell中的工作方式类似,包括csh派生的shell和sh派生的shell,如bash
)。