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

标签 bash shell

我想为使用通配符作为参数的 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,标记为可执行文件,并且位于 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

关于bash - 在参数中使用通配符选项为 bash 脚本创建别名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30201735/

相关文章:

linux - 在同一行打印 awk 的两个匹配变量

bash - 使用 tee 命令创建时间特定的日志文件

bash - 在 awk 中使用多个分隔符

regex - 在 Bash 中递归更改文件扩展名

linux - 编写一个脚本来删除 Linux 中不同文件夹中存在的文件

vb.net - 在命令提示符下运行多行 vb.net

arrays - jq: 无法用字符串 "id"索引数组

linux - 通过 ssh 获取以 sudo 启动的进程的 PID

linux - 使用变量作为非sudo用户+创建数据库

linux - bash 脚本远程 ssh ping on unit (cisco) 结果只有一半响应