我有一些shell命令。我想将输出写入标准输出并将其保存到变量中。 我想用一个命令来解决它。 我试过这些东西。
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
有什么想法吗?
答案 0 :(得分:57)
怎么样:
VAR=$(ls | tee /dev/tty)
答案 1 :(得分:3)
在我们的团队城市,没有一个char-console。 还有一个小问题。
如果我使用
VAR=$(ls -1); echo $VAR
与ls -1
我的解决方案有效,如果无关紧要,输出来自错误管道。
VAR=$(ls -1 | tee >&2)
答案 2 :(得分:0)
据我所知,VAR=`ls`;echo $VAR
可以,但你不喜欢因为它上面有2个命令。
虽然@ Gary-Barker正在工作,但我没有检查所有系统。如果您遇到T恤或其它问题,您可以建立自己的ALWAYS。
我不知道你是否知道这一点,但你可以在Linux上使用的很多程序只是一堆使用系统上的小二进制代码的代码。 虽然这是真的,但是使用1或2个commans是没有意义的,因为最终的执行实际上是一堆小的。
所以,如果您真正的问题是您只能在目标中编写一个命令,那么您可以编写自己的" app",通过在/ sbin文件夹中创建一个sh脚本而不用它。 sh extension(因为这些都是./或sh前缀,而不是名称)
我写了这个例子:
#!/bin/bash
if [ $1 ]
then
VAR=$*; echo $VAR
fi
对于这个例子,我创建了文件/ sbin / varrun。我已经尝试使用成功(正常)输出的后续命令:
varrun ls
varrun uname
varrun uname -a
请注意,我没有使用"报价"在带空格的命令上。