gpt4 book ai didi

tcsh - tcsh 中的 If-then-else 语法

转载 作者:行者123 更新时间:2023-12-04 02:21:43 33 4
gpt4 key购买 nike

我试图在 tcsh(版本 6.12.00 (Astron) 2002-07-23)中编写一个简单的脚本,但我被 if-then-else 语法绊倒了。我对剧本写作很陌生。

这个脚本有效:

#!/bin/tcsh -f
if (1) echo "I disagree"

但是,这个不会:

#!/bin/tcsh -f
if ( 1 ) then
echo "I disagree"
else
echo "I agree"
endif

一方面,这段代码在运行时会回显这两个语句。在我看来,它永远不应该看到其他人。另一方面,输出还穿插着“:未找到命令”的三个迭代。

编辑添加:这里是逐字输出:

: Command not found.
I disagree
: Command not found.
I agree
: Command not found.

我知道标准建议是改用另一个 shell,但我真的不能这样做(新工作、新同事、其他人都使用 tcsh,希望我的脚本是可移植的)。

最佳答案

当我复制并粘贴您的脚本并在我的系统上运行它时,它会正确打印我不同意

当我将行结尾更改为 Windows 样式时,我得到:

: Command not found.
I disagree
: Command not found.
I agree
: Command not found.

因此,您的脚本很可能具有 Windows 风格的行尾。修复行尾,它应该可以工作。 dos2unix 命令是一种方法(首先是 man dos2unix;与大多数 UNIX 文本处理命令不同,它会替换其输入文件。)

问题是 tcsh 无法将 ^M ('\r') 识别为行尾字符。它将行尾的 then^M 视为单个命令,并打印一条错误消息 then^M: Command not found。 ^M 使光标返回到行首,消息的其余部分将覆盖 then

关于tcsh - tcsh 中的 If-then-else 语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28302240/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com