我正在使用 shell 制作一个简单的 shell 脚本tcsh
。我分配了一个变量作为稍后使用的命令。但是单引号内的括号消失了。
set aaa = "test '10' '{}' ' " ; echo $aaa
结果显示
test '10' '' '
为什么会这样?如果我单独使用{}
和''
,没关系。
set aaa = "test '10' {} '' ' " ; echo $aaa
test '10' {} '' '
我正在尝试制作一个自动替换文本文件中单词的脚本。
In a.v,
BIRA_0 0
BIRA_1 400
BIRA_2 800
BIRA_3 C00
...
in b.v,
BIRA_0[25:0]
BIRA_0[95:26]
BIRA_0[125:96]
BIRA_0[255:125]
BIRA_1[5:0]
BIRA_1[25:6]
...
Result,
0[25:0]
0[95:26]
0[125:96]
0[255:125]
400[5:0]
400[25:6]
...
当然,我可以使用
$sed "s/BIRA_0/0/" b.v > result
但问题是该文件a.v
包含许多这样的替换案例,所以我想通过 Cshell 脚本自动制作。
这段代码:
foreach mod ("`lsmod`")
echo $mod
end
输出 的每一行lsmod
。如何从每一行访问第一个字段,即模块?
是否有csh
可以调试代码的 vs 代码的 IDE 或扩展csh
?
受这个问题的启发,我想尝试以这种方式更改我的命令提示符
将此行输入到 ~/.cshrc
一个。setenv PS1 "\[\e[32m\][\[\e[m\]\[\e[31m\]\u\[\e[m\]\[\e[33m\]@\[\e[m\]\[\e[32m\]\h\[\e[m\]:\[\e[36m\]\w\[\e[m\]\[\e[32m\]]\[\e[m\]\[\e[32;47m\]\\$\[\e[m\] "
湾。我使用 setenv 是因为它是export 的 csh 等价物,并且是最接近这个过程的东西,它使用 bash 命令 export。
然而,这并没有奏效。setenv 抛出错误:
变量名称必须包含字母数字字符。
如何更改我的 cshell 提示符以修改颜色和显示的文本?
要么我的 Solaris 10 csh 实现if语句有问题,要么我没有得到正确的东西(当然,至少在我的情况下,第二个很可能)但是当我这样做时:
% if 1 then <enter>
%
=> 什么都没发生
当我这样做时:
% if 0 then
?
=> 这也是我在第一种情况下所期望的。Couse 否则我没有办法完成我的陈述而没有得到
if: improper then
我真的可以请您不要以“不要使用 csh”作为您赞赏的答案的开头......如果您真的喜欢它,您可以用它来结束它。Couse 在过去几年到现在为止,csh 为我的交互目的提供了很好的服务,对于我所做的这个小脚本,我使用 Bourne shell 或 bash。
谢谢
我想用这个脚本做的动作是
执行或不执行该操作。
我对 while 循环和读取输入有疑问。我试过这个:
#!/bin/csh -f set DIR = 'pwd' find $DIR -name * -exec basename {} \; | while read filename do read -p $filename" (y or n?)"choice if ($choice = "y") then <> endif end
但我得到了错误:
find: `basename' terminated by signal 13.
我还在考虑再次使用一段时间来扩展用户的输入,直到给出是或否,但这是一个二阶问题。