首页 > 解决方案 > bash 与破折号脚本中的 $_

问题描述

我需要从 to 移植一个简短的脚本bashdashsh在 Debian 10 下)。它包含以下行:

chown root:www-data /etc/nginx/conf.d && chmod 775 $_

这现在失败了,因为$_保留了前一个命令的最后一个参数(即/etc/nginx/conf.d),bash但现在保留了与 non-interactive 不同的值dash。作为另一个恰当的例子,输出bash -c 'echo 1 2 && echo $_'和输出dash -c 'echo 1 2 && echo $_'也不同。

形成上述类型的“简洁”语句的典型方法是什么dash(不诉诸更专业的命令,例如install)?

标签: bashdebiansh

解决方案


只写一个函数。

chownmod () { chown "$1" "$3" && chmod "$2" "$3"; }

并将该行替换为以下内容。

chownmod root:www-data 775 /etc/nginx/conf.d

推荐阅读