参数命令如何在Bash Shell脚本中工作?

时间:2014-03-07 01:50:26

标签: bash

我想理解为什么这两行代码既可以工作又可以产生 通过在BASH中运行此shell脚本创建的文件中的相同内容。

也许那时我可以弄清楚如何获得我想要的输出,这就是 文件名,没有在那里写入[[/ home / inst1 /]]行。

第一行:

TargetDir=$(ls -d /home/inst1/ *.txt  *.wmv *.odt >> /home/inst1/EXEofThurs9.txt)

第二行:

TargetDir=$(ls -d *.txt  *.wmv *.odt /home/inst1/ >> /home/inst1/EXEofThurs9.txt)

文件内容:

Does the SubConcious Play A Role In Programming.txt  
File_Management_At_Last_2wo_YEARS_After_Beginning.odt  
/home/inst1/  
NEW_CHAT_With_FRANK_append_FILE.txt  
NewFile.txt  
rocheFlynSail.wmv  
What_Does_AYFJHS_Mean.txt  

1 个答案:

答案 0 :(得分:0)

shell在执行命令之前展开所有通配符。参数顺序与您输入的参数的顺序相同;通配符将按字典顺序由所有匹配文件替换。所以当你这样做时:

ls -d /home/inst1/ *.txt *.wmv *.odt

shell会扩展当前目录中的每个通配符(因为通配符没有目录前缀),结果命令为:

ls -d /home/inst1 file1.txt file2.txt file1.wmf file2.wmv file3.wmv file1.odt file2.odt

如果您尝试展开/home/inst1目录中的通配符,则可以执行以下操作:

(cd /home/inst1; ls *.txt *.wmv *.odt >> /home/inst1/EXEofThurs9.txt)