我正在编写简单的脚本,由 root 运行,它需要代表其他用户运行一些参数化命令
例如,在下面的示例中,我想使用从变量“VER”获取的版本创建目录,但是无论我做什么,它都不起作用...VER变量值没有正确传递给命令(我尝试过用双引号等包围命令)
VER='10.2.1'
su - other_user -c 'mkdir -p /home/other_user/$VER'
知道如何实现吗?
答案1
将变量传递到执行的命令中的方式与将变量传递到(或)脚本su -c
中的方式相同:sh -c
bash -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:~$