主题:SHELL 编程问题。
spirit936
[专家分:280] 发布于 2006-05-10 11:23:00
我想写一段小程序:
#!/bin/bash
echo -n "First directory:"
read firstDirectory
echo -n "Second directory:"
read secondDirectory
。。。。。读出了两个目录,现在我想进入第一个目录找出一个文件的文件名,去第二个目录查找是否有该文件,有谁知道应该怎么做?
谢谢。
回复列表 (共11个回复)
沙发
雪风无痕 [专家分:690] 发布于 2006-05-10 12:19:00
不明白你的意思,能举个例子吗?
板凳
spirit936 [专家分:280] 发布于 2006-05-10 12:46:00
#!/bin/bash
#输入并读出第一个目录存入变量 firstDirectory
echo -n "First directory:"
read firstDirectory
#输入并读出第二个目录存入变量 secondDirectory
echo -n "Second directory:"
read secondDirectory
#接下来我要在第一个目录内查找文件,任意找出一个文件,然后在第二个目录中判断这个文件是否存在。
具体应该怎么做?
3 楼
雪风无痕 [专家分:690] 发布于 2006-05-10 14:24:00
你写的SHELL我看得明白
我想不明白的是这一句:
"进入第一个目录找出一个文件的文件名"
我的理解是这样:
用户输入文件名,然后在第一个文件夹里找,如果存在,到第二个文件夹找
还是这样?
列出第一个文件夹的文件,用户选一个,然后到第二个文件夹找
4 楼
spirit936 [专家分:280] 发布于 2006-05-10 14:37:00
是列出第一个文件夹的所有文件,任意选出一个,然后到第二个文件夹下查找是否存在。
5 楼
雪风无痕 [专家分:690] 发布于 2006-05-10 14:54:00
#!/bin/sh
echo "First directory:"
read FirstDirectory
echo "Second directory:"
read SecondDirectory
#列出文件,按Q退出
less $FirstDirectory
echo "Please input the file's name"
read FileName
if [ -s "$SecondDirectory/$FileName" ];then
echo "$FileName is exist in $SecondDirectory"
else
echo "$FileName is not exist in $SecondDirectory"
fi
6 楼
spirit936 [专家分:280] 发布于 2006-05-10 15:07:00
非常谢谢 雪风无痕!
不过我还有个问题就是说如何把第一个目录下所有的文件都读出来。然后对每一个进行比较。而不需要手动进行输入没一个文件名。
7 楼
雪风无痕 [专家分:690] 发布于 2006-05-10 15:25:00
#!/bin/sh
echo "First directory:"
read FirstDirectory
echo "Second directory:"
read SecondDirectory
FileList=`ls $FirstDirectory`
for FileName in $FileList;do
if [ -s "$SecondDirectory/$FileName" ];then
echo "$FileName is exist in $SecondDirectory"
else
echo "$FileName is not exist in $SecondDirectory"
fi
done
8 楼
spirit936 [专家分:280] 发布于 2006-05-10 15:45:00
不知道是什么地方的原因.这一行无法通过,能否看一下是什么原因,好吗?
FileList='ls $FirstDirectory'
9 楼
雪风无痕 [专家分:690] 发布于 2006-05-10 16:51:00
等号后面以及最后的不是引号,是键盘左边的"反引号"(大概是叫这个名字吧 -_-b )
就是 tab 键上面,数字 1 左边的那个键
如果想把命令执行后的结果赋与变量,就可以使用"反引号":
A=`mkdir X`
num=`expr $num + 1`
10 楼
spirit936 [专家分:280] 发布于 2006-05-10 17:09:00
: )
我已经把那个改过来了.但是那一行还是有错误。不知道为什么?我把错误信息发给你看一下.
./diffN: line 8: FileList: command not found
然后我把这句改成了这样: ${FileList} = `ls ${firstDirectory}`
错误信息又变成了: ./diffN: line 8: =: command not found
你知道是什么原因吗?麻烦你了.
我来回复