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

时间:2015-05-12 21:28:30

标签: bash shell

我想为使用通配符作为参数的bash脚本创建alias。当我尝试使用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 个答案:

答案 0 :(得分:4)

别名不通过$1等处理参数;他们只是将文本直接添加到命令行的其余部分。

使用:

alias log_list='sh scriptname'     # note that these are single-quotes, not backticks

...或功能:

log_list() { sh scriptname "$@"; }

...虽然如果你的脚本被命名为log_list,标记为可执行文件,并且位于PATH中的某个位置,那么该别名或函数应该是完全没必要的。

现在,那就是说,你提议的log_list实现也有一堆错误。清理后的版本可能更像......

#!/bin/sh
for file_name in "$@" ; do
   if [ ! -d "$file_name" ] && [ -f "$file_name" ] ; then
       #do some processing ...
       printf '%s\n' "$file_name"
   fi
done
相关问题