如何向 su - 命令 bash 添加变量

如何向 su - 命令 bash 添加变量

我正在编写简单的脚本,由 root 运行,它需要代表其他用户运行一些参数化命令

例如,在下面的示例中,我想使用从变量“VER”获取的版本创建目录,但是无论我做什么,它都不起作用...VER变量值没有正确传递给命令(我尝试过用双引号等包围命令)

VER='10.2.1'
su - other_user -c 'mkdir -p /home/other_user/$VER'

知道如何实现吗?

答案1

将变量传递到执行的命令中的方式与将变量传递到(或)脚本su -c中的方式相同:sh -cbash -c

su other_user -c 'mkdir -p "/home/other_user/$1"' sh "$VER"

这两个参数sh和将分别传递到以(该 shell 在错误消息中使用) 和开头的"$VER"shell 。su$0$1

有关的:

答案2

双引号应该可以实现。你需要失去当然echo

steve@DESKTOP-E197DDI:~$ VER='10.2.1'
steve@DESKTOP-E197DDI:~$ su - steve -c "echo mkdir -p /home/other_user/$VER"
Password:
mkdir -p /home/other_user/10.2.1
steve@DESKTOP-E197DDI:~$

相关内容