redirect command output into variable and standard output in ksh
我有一些命令。我想将输出写入标准输出并保存到变量中。我想用一个命令来解决这个问题。我试过这些东西。
1 2 3 4 | ls > $VAR # redirects the output to file which name is stored in $VAR ls | tee -a $VAR # writes to standard output as well as in file which name is stored in $VAR VAR=`ls` # output into $VAR, but it is not sent to standard output VAR=`ls`;echo $VAR # ok, it works but these are two commands |
有什么想法吗?
怎么样:
1 | VAR=$(ls | tee /dev/tty) |
@gary_barker的回答很好,但这在所有系统上都是不可能的。
在我们的TeamCity上没有char控制台。还有一个小问题。
如果我使用
它和
如果不重要的话,我的解决方案是有效的,输出来自错误管道。
据我所知,
当@gary barker工作时,我没有检查所有系统。如果你对tee或其他的有问题,你可以建立你自己的永远。
我不知道你是否知道,但是在Linux上可以使用的很多程序只是一堆在系统上使用小二进制的代码。虽然这是真的,但是使用1或2个逗号是没有意义的,因为最终的执行实际上是一堆小的逗号。
因此,如果您真正的问题是只能在目标中编写一个命令,那么您可以编写自己的"app",方法是将/sbin文件夹中的sh脚本设置为不带.sh扩展名(因为这些脚本的前缀是./或sh,而不是名称)。
我写了这个例子:
if [ $1 ]
then
VAR=$*; echo $VAR
fi
对于这个示例,我已经将文件/sbin/varrun设置为。我用成功(正常)输出的以下命令进行了尝试:
varrun ls varrun uname varrun uname -a
请注意,我没有在带有空格的命令上使用"引号"。