回 帖 发 新 帖 刷新版面

主题:SHELL 编程问题。

我想写一段小程序:
#!/bin/bash
echo -n "First directory:"
read firstDirectory
echo -n "Second directory:"
read secondDirectory

。。。。。读出了两个目录,现在我想进入第一个目录找出一个文件的文件名,去第二个目录查找是否有该文件,有谁知道应该怎么做? 
谢谢。

回复列表 (共11个回复)

沙发

不明白你的意思,能举个例子吗?

板凳

#!/bin/bash
#输入并读出第一个目录存入变量 firstDirectory
echo -n "First directory:"
read firstDirectory
#输入并读出第二个目录存入变量 secondDirectory
echo -n "Second directory:"
read secondDirectory
#接下来我要在第一个目录内查找文件,任意找出一个文件,然后在第二个目录中判断这个文件是否存在。

具体应该怎么做?

3 楼

你写的SHELL我看得明白
我想不明白的是这一句:
"进入第一个目录找出一个文件的文件名"

我的理解是这样:
用户输入文件名,然后在第一个文件夹里找,如果存在,到第二个文件夹找

还是这样?
列出第一个文件夹的文件,用户选一个,然后到第二个文件夹找

4 楼

是列出第一个文件夹的所有文件,任意选出一个,然后到第二个文件夹下查找是否存在。

5 楼

#!/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 楼

非常谢谢 雪风无痕!
不过我还有个问题就是说如何把第一个目录下所有的文件都读出来。然后对每一个进行比较。而不需要手动进行输入没一个文件名。

7 楼

#!/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 楼

不知道是什么地方的原因.这一行无法通过,能否看一下是什么原因,好吗?
FileList='ls $FirstDirectory'

9 楼

等号后面以及最后的不是引号,是键盘左边的"反引号"(大概是叫这个名字吧 -_-b   )
就是 tab 键上面,数字 1 左边的那个键

如果想把命令执行后的结果赋与变量,就可以使用"反引号":
A=`mkdir X`
num=`expr $num + 1`

10 楼

: )
我已经把那个改过来了.但是那一行还是有错误。不知道为什么?我把错误信息发给你看一下.
./diffN: line 8: FileList: command not found

然后我把这句改成了这样:  ${FileList} = `ls ${firstDirectory}`
错误信息又变成了:   ./diffN: line 8: =: command not found

你知道是什么原因吗?麻烦你了.

我来回复

您尚未登录,请登录后再回复。点此登录或注册