我正在编写一个 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