gpt4 book ai didi

bash - 用 su 模拟 sudo 的行为

转载 作者:行者123 更新时间:2023-11-29 09:12:01 28 4
gpt4 key购买 nike

我正在尝试围绕 su 编写一个包装器,使其更像 sudo,这样 su_wrapper foo bar baz == su -c "foo bar baz".

但是,我不确定如何解决这个问题。我想到了这个:

su_wrapper ()
{
su -c "$@"
}

但是,在上面,只能有一个参数;这会因多个参数而失败(因为 su 将它们视为自己的参数)。

还有一个问题:由于参数是通过shell传递的,我想我必须明确指定shell以避免其他问题。也许我想做的事情可以用伪 bash(!) 表示为 su -c 'bash -c "$@"'

那么,我怎样才能让它接受多个参数呢?

最佳答案

使用 printf "%q" 对参数进行转义,以便它们可以用作函数的字符串输入:

su_wrapper() {
su -s /bin/bash -c "$(printf "%q " "$@")"
}

$* 不同,即使参数包含特殊字符和空格,它也能正常工作。

关于bash - 用 su 模拟 sudo 的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24340664/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com