我想为bash脚本创建 alias
,该bash脚本使用通配符作为参数。当我尝试使用alias
CMD时,它不给出所需的输出。
别名CMD的使用将为log_list /tmp/abc*
#usage log_list /tmp/abc*
alias log_list=`sh scriptname $1`
#here is the script code
for file_name in $* ; do
if [ ! -d $file_name ] && [ -f $file_name ] ; then
#do some processing ...
echo $file_name
fi
done
别名不能通过 $1
等处理参数;他们只是直接将文本直接放到命令行。
要么使用:
alias log_list='sh scriptname' # note that these are single-quotes, not backticks
...或功能:
log_list() { sh scriptname "$@"; }
...尽管您的脚本命名为log_list
,标记为可执行文件,并且位于路径中的某个地方,则应完全不需要别名或函数。
现在,也就是说,您提出的log_list
实施也有很多错误。清理版本看起来更像...
#!/bin/sh
for file_name in "$@" ; do
if [ ! -d "$file_name" ] && [ -f "$file_name" ] ; then
#do some processing ...
printf '%sn' "$file_name"
fi
done