ksh:for循环遍历特定目录中的文件

ksh:for循环遍历特定目录中的文件
schema_dir=schema_app
for SCHEMA_CHANGE in $schema_dir/*
do

所以我的 pwd/A/B/C/scripts 中有子目录(schema_appschema_data等)。我想要一个 for 循环来遍历每个目录中的文件,具体取决于我最初传递给脚本的参数。

我在这里犯了什么错误?因为,当我回显SCHEMA_CHANGE(文件名)时,它显示如下schema_app/filename。我怎样才能只得到filename这里?

答案1

你没有做错任何事。schema_app/filename是文件的正确路径。这是您需要传递给命令(或重定向)以处理文件的内容。单独使用filename是行不通的:命令如何知道文件位于哪个目录中?

如果由于某种原因您需要不带目录部分的文件名,您可以使用

"${SCHEMA_CHANGE##*/}"

这将获取变量的值SCHEMA_CHANGE并删除直到最后一个的部分/(或者如果没有 则保持值不变/),因此您将获得不带目录部分的文件名。

相关内容