0

我正在编写一个 shell 脚本,并且想通过管道将 STDOUT 传输到 su 命令中的文件。输出的文件需要由另一个用户拥有,因此使用 su. 但是,当要输出的文本和输出文件的名称是变量时,我无法让管道与 su 一起使用(参见下面的示例)。

我的解决方法是在不使用 su 的情况下通过管道传输到文件,然后将该文件 chown 给我需要的用户。但是,我想知道是否有使用 su 执行此操作的“一步”方式?

示例(仅供说明):

#!/bin/sh

message="Hello World";
file="/tmp/HelloWorld.txt";

su someuser -c 'echo "${message}" > "${file}"';

如果我${file}输入双引号,如本例所示,我会收到以下错误:

bash: : No such file or directory

如果我删除 周围的双引号${file},我会收到以下错误:

bash: ${file}: ambiguous redirect
4

1 回答 1

1

尝试su someuser -c "echo \"${message}\" > ${file}";

单引号内的变量不展开。

于 2011-12-29T10:08:36.767 回答