我有一个带有别名的脚本_test。它工作正常,但在打印输出之前,它确实如此<arguments>: command not found。例如,_test -h给出line 49: -h: command not found
这是一个最小的例子:
alias _test='
echo Hi
'
shopt -s expand_aliases
_test -h
Run Code Online (Sandbox Code Playgroud)
编辑:对于那些询问使用函数的人,事实上,我曾经使用过一个函数——但它开始导致递归问题。我只是想要一些类似于宏的东西——就像文本被插入到脚本中一样。
编辑2:我刚刚意识到为什么我一直对我的函数/别名进行递归。我修复了它,然后切换回函数,但这个问题可能对其他人有帮助。
删除换行符。如所写,_test -h扩展到此,在 echo 的上方和下方各有一个空行:
\necho Hi\n-h\nRun Code Online (Sandbox Code Playgroud)\n使其成为单行别名:
\nalias _test='echo Hi'\nRun Code Online (Sandbox Code Playgroud)\n但一般来说,应避免使用别名。它们的真正目的是为了方便交互式 shell。在脚本中\xe2\x80\x94或者哎呀,即使在交互式shell中\xe2\x80\x94,最好还是使用函数。例如:
\n_test() {\n echo Hi "$@"\n}\nRun Code Online (Sandbox Code Playgroud)\n\n\n对于那些询问如何使用函数的人,事实上,我曾经用过一个函数来代替——但它开始导致递归问题。我只是想要一些类似于宏的东西——就像文本被插入到脚本中一样。
\n
您是否尝试像这样包装现有命令?
\nalias ls='ls --color=auto -F'\nRun Code Online (Sandbox Code Playgroud)\n如果是这样,您可以使用它command来防止函数递归调用自身。等效函数是:
ls() {\n command ls --color=auto -F "$@"\n}\nRun Code Online (Sandbox Code Playgroud)\ncommand ls调用ls命令而不是ls我们刚刚定义的函数,这样我们就不会陷入无限递归循环。
| 归档时间: |
|
| 查看次数: |
474 次 |
| 最近记录: |