首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么在具有标准输入和输出的csh脚本中会出现"No Match“错误?

为什么在具有标准输入和输出的csh脚本中会出现"No Match“错误?
EN

Stack Overflow用户
提问于 2017-04-06 05:19:35
回答 2查看 10.8K关注 0票数 2

我正在尝试了解Unix,这样我就可以用UNIX csh编写一个简短的程序,该程序接受stdin并返回stdout。所以我写了下面的代码:

代码语言:javascript
运行
复制
echo "TEST"
    echo -n "Input: "
    set TEST = "$<"
    echo $TEST

然而,我总是收到一个错误,当我输入某些字符时,我不太清楚。例如,

运行1:没有问号。正如您所看到的,它完全按照我想要的方式运行。

代码语言:javascript
运行
复制
edoras ~/As4[199]% ./scriptp1
        TEST
        Input: www.google.com/search
        www.google.com/search

运行2:带问号。突然,出现了“不匹配”错误。

代码语言:javascript
运行
复制
 edoras ~/As4[201]% ./scriptp1
    TEST
    Input: https://www.google.com/search?criteria
    echo: No match.

那么这个错误是什么,我该如何修复它呢?因为对于我必须编写的实际程序,我必须能够读取所有特殊字符并打印出它们的ASCII代码。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-04-06 06:32:33

tcsh manual page

除非包含在'"'中或给出了':q'修饰符,否则变量替换的结果最终可能会被命令和文件名替换。

因为没有引用变量,所以外壳程序会尝试文件名替换,这是因为您可能没有与当前目录中名为https:的子目录中的名为www.google.com的子目录中的search?citeria匹配的文件。“无匹配”表示文件名替换失败。在同一个手册页面中:

如果包含'*'__、'?'__、'[''~'__的全局模式不匹配任何文件,则无论是否包含'^'__,都是错误的。

技术答案到此结束。其余的纯粹是基于意见的。

请注意,除非您有特别好的理由,否则通常认为在兼容-compatible的shell中编写脚本更可取,因为cshshell在缺省情况下并不总是可用。我认为,作为一个初学者,您应该首先学习如何在与-compatible兼容的shell中编写脚本,然后,如果需要的话,可以考虑使用cshshell。

票数 2
EN

Stack Overflow用户

发布于 2017-04-06 09:31:34

亚历克斯的回答是对的。"?“是UNIX中为特殊命令保留的一系列元字符之一,因此为了打印它们,我们必须跳过一些我还没有完全弄清楚的难题。但至少现在我知道为什么我会得到这样的输出了。

"?“是一个匹配的命令,所以,就像Alex说的,它试图将我的输入匹配到不存在的东西,而不是打印出来,作为一个没有特殊值的普通旧文本字符。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43241824

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档