将空参数传递给sudo -i

时间:2015-01-11 22:27:31

标签: linux bash shell sudo

以下是我想使用sudo -i运行的bash脚本示例:

#!/bin/bash

echo "arg 1: $1"
echo "arg 2: $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执行,但我想知道是否有任何方法可以实现这直接来自命令行。

2 个答案:

答案 0 :(得分:2)

这对我有用:

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

答案 1 :(得分:0)

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

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