将空参数传递给 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'
这是一个示例 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'