不使用重定向将命令输出写入文件

Eda*_*na 2 bash sed io-redirection

我必须编写一个小的 bash 脚本,将一些信息写入文件。但是,将从不支持重定向运算符 (RTM) 的地方调用该脚本。因为我不能使用重定向操作符。我试过这样的事情:

#!/bin/bash
busers_var=$(busers -w name)
sed -i 'T a/"$busers_var"' alert.out
Run Code Online (Sandbox Code Playgroud)

我收到错误:

sed: can't find label for jump to `a/"$busers_var"'
Run Code Online (Sandbox Code Playgroud)

或者,如果我使用:

sed -i "T a/$busers_var" alert.out
Run Code Online (Sandbox Code Playgroud)

我得到:

sed: -e expression #1, char 25: unknown command: `J'
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

Jef*_*ler 6

如果busers -w name是有问题的命令,请尝试tee

busers -w name | tee /path/to/output
Run Code Online (Sandbox Code Playgroud)

也许添加标准错误:

busers -w name 2>&1 | tee /path/to/output
Run Code Online (Sandbox Code Playgroud)

或使用ed

touch output; ed -s output <<< $'r !busers -w name\nwq'
Run Code Online (Sandbox Code Playgroud)

或用于sort“合并已排序的文件;不排序”,结合其-o output选项:

buser -w name | sort -m -o output
Run Code Online (Sandbox Code Playgroud)