是否有可能获得正在执行的命令参数?
Is it possible to get command arguments now executing?
如果没有指定参数,我想声明附加参数的别名。
例如,
alias vimtutor=‘vimtutor $([ $# -eq 0 ] && echo ja.utf-8)’
我原以为不带参数的执行 vimtutor
会被替换为 vimtutor ja.utf-8
,但它无法正常工作。
所以,我在 bash shell.
上尝试了一些测试
$ echo $#
0
$ echo a b c $#
a b c 0
$ echo [=13=]
-bash
而且我知道现在无法以正常方式执行命令参数。
现在,我声明 shell 如下所示的函数,
vimtutor(){ /usr/bin/vimtutor $([ $# -eq 0 ] && echo ja.utf-8) “$@“; }
它按预期工作,但感觉不太聪明。
有解决这个问题的办法吗?
变量 $#、$0 等在别名中使用时引用您的 bash 会话变量; bash 会话启动时使用的参数,而不是传递给别名命令的参数。
我建议您将命令放在脚本中,并为该脚本设置别名。即
$ echo 'vimtutor $([ $# -eq 0 ] && echo ja.utf-8)' > ~/vimtutor.sh
$ chmod +x ~/vimtutor.sh
$ alias vimtutor='~/vimtutor.sh'
如果没有指定参数,我想声明附加参数的别名。
例如,
alias vimtutor=‘vimtutor $([ $# -eq 0 ] && echo ja.utf-8)’
我原以为不带参数的执行 vimtutor
会被替换为 vimtutor ja.utf-8
,但它无法正常工作。
所以,我在 bash shell.
上尝试了一些测试$ echo $#
0
$ echo a b c $#
a b c 0
$ echo [=13=]
-bash
而且我知道现在无法以正常方式执行命令参数。
现在,我声明 shell 如下所示的函数,
vimtutor(){ /usr/bin/vimtutor $([ $# -eq 0 ] && echo ja.utf-8) “$@“; }
它按预期工作,但感觉不太聪明。
有解决这个问题的办法吗?
变量 $#、$0 等在别名中使用时引用您的 bash 会话变量; bash 会话启动时使用的参数,而不是传递给别名命令的参数。
我建议您将命令放在脚本中,并为该脚本设置别名。即
$ echo 'vimtutor $([ $# -eq 0 ] && echo ja.utf-8)' > ~/vimtutor.sh
$ chmod +x ~/vimtutor.sh
$ alias vimtutor='~/vimtutor.sh'