【发布时间】:2014-04-25 16:16:17
【问题描述】:
使用 for 循环或管道(都使用一个文件名),我需要弄清楚如何从标准输入中接受无限的指定文件。我尝试过正则表达式和各种通配符形式。我遇到的两个主要问题:只有第一个文件通过脚本或目录中的每个文件都通过。这是一个基本 Unix 课程的作业,到目前为止我的问题是过于复杂。根据本学期剩下的时间,我想要做的事情有一个简单的解决方法,在这里我花了两个小时阅读数百个网站和帖子,让我头晕目眩。
编辑:命令行提示符类似于 ~/dir/script currentWord newWord fileName1 fileName2 fileName3
#!/bin/csh
set currentWord=$1
set newWord=$2
set fileName=$3
if { grep -q $1 *$3 } then
sed -i.bak -e "s/$1/$2/g" $3
else
echo "The string is not found."
endif
#grep -q $1 $3 | sed -i.bak -e "s/$1/$2/g" $3
【问题讨论】:
-
为什么选择 csh?为什么不使用 bash 或其他一些 POSIX shell 衍生产品?
-
这段代码应该完成什么?标准输入在哪里出现?提供您拥有
$3的值? -
正如我在帖子中提到的......家庭作业。 (不是想找别人来做我的工作,只是非常诚实!)从我读过的所有内容以及我对这位教授的了解来看,他的目标是尽可能地让通过这门课变得绝对困难。还编辑了帖子以包含 cmd 提示符。从标准输入中,您可以获得所有变量信息。
-
perl.com/doc/FMTEYEWTK/versus/csh.whynot 不要在 csh 中编写脚本。
-
让你在
csh写脚本肯定是一种让你难以通过的方式...