2012-02-14 90 views
2

我从来没有做过shell脚本之前,需要一些帮助,一个小项目。检查用户输入的三种文件名作为输入

我希望用户输入三种文件名,并检查用户已经输入了三个名字,如果它或多或少给出错误。该文件将被分类到另一个文件,但被工作正常只是有问题,检查用户输入的内容。

我已经试过

echo Please select the three files you want to use 
read $file1 $file2 $file3 

if ! [ $# -eq 3 ]; then 
    echo "Please enter THREE values" 
fi 

回答

3

不改变你read命令:

 
if [ -z "$file1" -o -z "$file2" -o -z "$file3" ]; then 
    echo "Please enter THREE values" 
fi 

但首选的方式在这里使用数组:

 
read -a files 
if [ ! ${#files[@]} -eq 3 ]; then 
    echo "Please enter THREE values" 
fi 

而且顺便说一句。元素是${files[0]}${files[1]}${files[2]}或者,你可以循环数组:

 
for f in "${files[@]}"; do 
    echo $f 
done 
+0

谢谢你这个完美的作品,也非常感谢你添加元素以及为我节省了一些时间在寻找这些。 – Splendid 2012-02-14 17:09:29

+0

没有问题,upvote ??? :-) – 2012-02-14 17:12:31

+1

我想我选择答案的那一刻,但需要对这份排名15,仍然只有13,将给予好评的那一刻,我可以答应 – Splendid 2012-02-14 17:35:48

0

你做的很好,唯一的问题是在你读的语句中使用$。删除美元和您的代码将工作:

#!/bin/sh 

echo "Please select the three files you want to use" 
read file1 file2 file3 

#Or something like: 
#echo -n "File 1:" 
#read file1 
#echo -n "File 2:" 
#read file2 
#echo -n "File 3:" 
#read file3 

echo "File 1: $file1 File 2 : $file2 File 3 : $file3"