SH - 使用变量

时间:2017-05-15 11:53:59

标签: sh

我正在尝试创建一个可以在文件夹中查找和存储特定类型文件的脚本。

当我运行myScript.sh时: $ ./myScript.sh *.txt

它应该在files.txt中保存所有扩展名为.txt的文件但对我不起作用。只保存第一个文件。

myScript.sh:

var=`find $1`
for file in $var
do
echo $var >> files.txt
done

这是练习的一个例子

4 个答案:

答案 0 :(得分:0)

这样做:

for file in $@
do
echo "$file" >> files.txt
done

使用$@,您可以获得您传递的脚本中的所有参数。

答案 1 :(得分:0)

你根本不需要循环。只需将find的输出重定向到您的文件即可。

find . "$1" >> files.txt

答案 2 :(得分:0)

最后,我修复了这个问题,传递.txt而不是* .txt并改变我的脚本:

$ ./myScript.sh *.txt

var=`find *$1`
for file in $var
do
echo $var >> files.txt
done

它对我有用。

谢谢大家的回答!

答案 3 :(得分:0)

我根本不明白为什么要将参数传递给脚本。如果您希望当前目录中名称以" .txt"结尾的所有文件,您可以执行以下任一操作:

ls *.txt > files.txt

find . -name '*.txt' > files.txt  # descends the directory tree

或(非标准)

find . -maxdepth 1 -name '*.txt' > files.txt

这些都不会特别好地处理具有嵌入换行符的文件,但是在将名称存储在文件中时,该用例处理不当。