bash脚本默认变量失效求助:别名h无法正确处理参数
问题原因
bash的别名只是简单的字符串替换,不支持处理位置参数($1、$2这类变量)。你写的alias h='history "${1:-25}"',执行h 100时会被替换成history "${1:-25}" 100,相当于给history传了两个参数,自然报错“too many arguments”;另外别名里也不允许使用${1:-25}这种参数展开语法,这就是你看到“cannot assign in this way”错误的原因。
解决方案
用shell函数代替别名,函数能完美支持位置参数和默认值:
h() { history "${1:-25}" }
使用说明
- 直接执行
h:默认显示25条历史记录 - 执行
h 100:显示100条历史记录
内容的提问来源于stack exchange,提问作者user275616
相关产品推荐
相关产品推荐

