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