将空参数传递给 sudo -i

mor*_*och 4 linux bash shell sudo

下面是我想使用的 bash 脚本示例sudo -i

#!/bin/bash

echo "arg 1: $1"
echo "arg 2: $2"
Run Code Online (Sandbox Code Playgroud)

当我使用一个空参数正常运行此命令时,它会按预期运行:

$ /tmp/args.sh "" two
arg 1:
arg 2: two
Run Code Online (Sandbox Code Playgroud)

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

$ sudo /tmp/args.sh "" two
arg 1:
arg 2: two
Run Code Online (Sandbox Code Playgroud)

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

$ sudo -i /tmp/args.sh "" two
arg 1: two
arg 2:
Run Code Online (Sandbox Code Playgroud)

我无法找出任何方法来引用或转义第一个空论点。

注意:我已经找到了一种解决方法,方法是写入/tmp/args.sh "" two文件,然后使用 执行该文件sudo -i,但我想知道是否有任何方法可以直接从命令行实现此目的。

Bar*_*mar 5

这对我有用:

sudo -i bash -c '/tmp/args.sh "" two'
Run Code Online (Sandbox Code Playgroud)