购物不可用时设置expand_alias?
Set expand_alias when shopt not available?
我正在尝试在我正在编写的 shell 脚本中使用别名,但它不起作用。
别名:
alias ts="awk '{ print strftime(\"[%Y-%m-%d %H:%M:%S]\"), $0 }'"
当我 运行 脚本时,出现以下错误:
./copyTask.sh: ts: not found
在网上搜了一圈,好像需要开启expand_aliases
shell选项,但是我没有安装shopt
...有什么办法我可以在不使用 shopt
或创建另一个 rootfs 映像的情况下启用别名扩展吗?
我正在使用 ash
shell。 awk
是 BusyBox v1.25.0 awk
.
注意:别名是在命令前加上时间戳的简单方法:
$ echo "foo" | ts
[2005-06-23 11:52:32] foo
编辑:由于有些人无法理解我的意思,this answer 有一个例子。
不要在脚本中使用别名。函数完成相同的工作 更好.
ts() { gawk '{ print strftime("[%Y-%m-%d %H:%M:%S]"), [=10=] }' "$@"; }
- 这适用于任何 POSIX shell,包括根本不支持别名的那些。
- 这适用于非交互式 shells,无需显式启用别名支持。
- 这可以通过别名无法实现的方式进行扩展(您可以将条件逻辑放在函数内;您可以将参数放在函数的非尾部位置;等等)。
- 在 bash 中,函数可以导出到环境中:
export -f ts
将使 ts
命令可用于子进程(其中 shell 它们 运行 也是 bash).
我正在尝试在我正在编写的 shell 脚本中使用别名,但它不起作用。
别名:
alias ts="awk '{ print strftime(\"[%Y-%m-%d %H:%M:%S]\"), $0 }'"
当我 运行 脚本时,出现以下错误:
./copyTask.sh: ts: not found
在网上搜了一圈,好像需要开启expand_aliases
shell选项,但是我没有安装shopt
...有什么办法我可以在不使用 shopt
或创建另一个 rootfs 映像的情况下启用别名扩展吗?
我正在使用 ash
shell。 awk
是 BusyBox v1.25.0 awk
.
注意:别名是在命令前加上时间戳的简单方法:
$ echo "foo" | ts
[2005-06-23 11:52:32] foo
编辑:由于有些人无法理解我的意思,this answer 有一个例子。
不要在脚本中使用别名。函数完成相同的工作 更好.
ts() { gawk '{ print strftime("[%Y-%m-%d %H:%M:%S]"), [=10=] }' "$@"; }
- 这适用于任何 POSIX shell,包括根本不支持别名的那些。
- 这适用于非交互式 shells,无需显式启用别名支持。
- 这可以通过别名无法实现的方式进行扩展(您可以将条件逻辑放在函数内;您可以将参数放在函数的非尾部位置;等等)。
- 在 bash 中,函数可以导出到环境中:
export -f ts
将使ts
命令可用于子进程(其中 shell 它们 运行 也是 bash).