将空参数传递给 sudo -i

Passing empty arguments to sudo -i

这是一个示例 bash 脚本,我想 运行 使用 sudo -i:

#!/bin/bash

echo "arg 1: "
echo "arg 2: "

当我 运行 这个命令通常带有一个空参数时,它 运行 如预期的那样:

$ /tmp/args.sh "" two
arg 1:
arg 2: two

使用简单的 sudo,我得到了预期的结果:

$ sudo /tmp/args.sh "" two
arg 1:
arg 2: two

但是,如果我使用 -i(获取用户的 shell 和登录脚本),第一个参数突然消失:

$ sudo -i /tmp/args.sh "" two
arg 1: two
arg 2:

而且我想不出任何方法来引用或转义第一个空参数。

注意:我已经通过将 /tmp/args.sh "" two 写入文件然后使用 sudo -i 执行它找到了解决方法,但我想知道是否有有什么方法可以直接从命令行实现这一点。

用单引号引用空的双引号参数,如下所示:

$ sudo -i /tmp/args.sh '""' two

这对我有用:

sudo -i bash -c '/tmp/args.sh "" two'