[Shell和批处理]_[枚举指定目录下的文件并处理]


场景:

1.有时候需要对某个目录下的文件进行单独处理操作,比如某个目录下的.txt文件,调用命令来处理这些文件。

2.如果复制文件路径并写死在脚本里的话,当txt文件增加时,就得修改脚本文件,这样会浪费大量的时间。

3.当然用其他动态语言也能做到,我的宗旨时哪个简单用哪个,有系统语言就先用系统语言,对外部环境依赖越少的就优先考虑,比如windows上自动部署网站程序,去指定目录获取最新的文件,复制到指定目录下移除原来的文件再安装上指定的文件,并启动服务,vbs,c++,c#,java,python等都能做到,哪个最快速,最容易移植,对外部环境依赖最少呢?我就会选vbs。^-^


bash shell版本:

#!/bin/sh
# 签名文件

idir="$1"
echo $idir
count=0
##### 1.用法1,以下会以空格分割来枚举字符串,但是对有空格的路径输出的变量值不正确$1.
##### `find "${idir}" -name *.txt`
##### `ls "${idir}"/*.txt`
##### 2.用法2,对文件路径枚举,缺点就是不能使用命令筛选出特定的文件.
for i in "${idir}"/*.txt;
do
	echo $count,$i
	#算数运算
	count=$(($count+1))
done


批处理版本

@echo off
@echo ...................begin
set APP_BIN_DIR="E:\test_output\Bin"
for /R %APP_BIN_DIR% %%i in (*.dll;*.exe) do echo %%i

注意:

1.在运行shell时遇到不识别shell语法的时候很大可能就是你的shell文件换行符有问题,shell文件是不是在windows上编辑过再放到linux下的?

'est.sh: line 4: syntax error near unexpected token `do
'est.sh: line 4: `do

2.错误解决参考 http://www.crifan.com/linux_shell_syntax_error_near_unexpected_token/

3.判断就是使用cat xxx.sh文件看里面的内容能否正常输出到命令行,不能就是有问题。转换下换行符或新建一个文件。


你可能感兴趣的:(shell,bash,for,批处理,循环条件)