我目前有一个名为(log2csv)的bash脚本。在当前目录中,我可以输入终端:
log2csv *.log
这将在当前目录中的每个.log文件上运行脚本。
或者我可以使用
对单个.log文件运行它 log2csv test1.log
我可以在脚本中包含* .log,而不是输入log2csv *.log
吗?所以我只需在目录中键入log2csv即可运行。我知道我可以别名,但我宁愿让脚本去做。
这是我正在运行的bash脚本:
#!/bin/bash
for path
do
base=$(basename "$path")
noext="${base/.log}"
[ -e "${noext}.csv" ] && continue
/Users/joshuacarter/bin/read_scalepack.pl "$path" > "${noext}.csv"
done
答案 0 :(得分:4)
变化:
for path
为:
for path in *.log
或者,或许更好:
names=( "$@" )
if [ "${#names}" = 0 ]
then names=( *.log )
fi
for path in "${names[@]}"
您可以考虑是否也设置shopt -s nullglob
等选项。这使用shell数组来处理其中包含空格等的名称。如果没有给出命令行参数,它将使用命令行参数,如果没有命令行参数,则会扩展*.log
中的文件列表。