我正在制作korn shell脚本,它尝试执行从ls和文件名模式循环的一些任务。从ls +模式与KSH或BASH循环
如果我硬编码在脚本中的模式,然后它的工作原理:
for my_archive in ls FAC*
do
echo $my_archive
done
但是,如果我通过PARAM发送模式,只给了我第一次出现:
for my_archive in ls $1
do
echo $my_archive
done
我正在制作korn shell脚本,它尝试执行从ls和文件名模式循环的一些任务。从ls +模式与KSH或BASH循环
如果我硬编码在脚本中的模式,然后它的工作原理:
for my_archive in ls FAC*
do
echo $my_archive
done
但是,如果我通过PARAM发送模式,只给了我第一次出现:
for my_archive in ls $1
do
echo $my_archive
done
首先,你不“不想‘LS’中就有
我猜你打电话给你的函数类似这样的
myfunc FAC*
在这种情况下,外壳在之前扩展调用函数。所以,你居然有这样的事:
myfunc FAC1 FAC2 FAC3 ...
当您使用$ 1,你随便挑的第一个文件而忽略其他
在你的功能,使用此:
function myfunc {
for my_archive in "[email protected]"; do
echo "$my_archive"
done
}
使用完全符合我的要求的引号将保护名称中包含空格的任何文件。
首先要使用for
来循环目录中的文件,不需要ls
。简单通配符“*”将展开到目录中的文件列表中。
for my_archive in FAC*
do
echo $my_archive
done
将使输出作为
FACfoo
FACbar
FAC123
等
现在第二代码变化
for my_archive in $1
do
echo $my_archive
done
如果代码被保存为`测试,运行代码as
test "FAC*"
,以便在执行脚本之前扩展通配符。