在参数中使用通配符选项为BASH脚本创建别名



我想为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

相关内容

  • 没有找到相关文章

最新更新