我想为使用通配符作为参数的 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/