Linux Bash脚本-将输出保存到文件的函数
我试图将集合的所有输出保存到单独的文件中。例如,一个函数类似于:Linux Bash脚本-将输出保存到文件的函数,linux,bash,Linux,Bash,我试图将集合的所有输出保存到单独的文件中。例如,一个函数类似于: function kernel_info(){ echo "Kernel version: $(uname -v)" } 我想把这个输出写入一个名为kernel_info的文件。 类似地,我将创建其他函数来收集主机名等其他信息。 如何编写一个函数,每次我想将信息保存到磁盘上的文件时都可以调用该函数? 谢谢使用tee kernel_info () { { printf 'Kernel version: ' u
function kernel_info(){
echo "Kernel version: $(uname -v)"
}
我想把这个输出写入一个名为kernel_info的文件。
类似地,我将创建其他函数来收集主机名等其他信息。
如何编写一个函数,每次我想将信息保存到磁盘上的文件时都可以调用该函数?
谢谢使用tee
kernel_info () {
{ printf 'Kernel version: '
uname -v
} | tee -a /path/to/kernel_info
}
此函数将printf
和uname
的组合输出写入给定文件,并继续将其写入标准输出
-a
选项使tee
附加到文件中
如果要参数化函数,可以
kernel_info () {
local fname
fname=${1:-/default/path/to/kernel_info}
{ printf 'Kernel version: '
uname -v
} | tee -a "$fname"
}
kernel_info # Writes to /default/path/to/kernel_info
kernel_info /var/log/kernel_info # Write to an alternate file
您可以通过阅读自动命名,而且非常简单
... | tee "${FUNCNAME}.log"
在要登录到指定输出文件的函数中。定义要循环的函数列表,然后调用它们,然后将结果重定向到文件中
替换,>
附加
#!/bin/bash
function local_hostname() {
echo "Hostname: $(hostname)"
}
function kernel_info() {
echo "Kernel version: $(uname -v)"
}
function write_to_file() {
> file.txt
funcs=(
local_hostname
kernel_info
)
for func in ${funcs[*]}
do
$func >> file.txt
done
}
write_to_file
你可以保持简单
$: tst() { date ; } >>log
$: ls -l log
ls: cannot access 'log': No such file or directory
$: tst
$: cat log
Wed, Jun 17, 2020 8:12:10 AM
$: tst
$: cat log
Wed, Jun 17, 2020 8:12:10 AM
Wed, Jun 17, 2020 8:12:17 AM
第二个泄漏
fname
,不应该是local
?它可以是。我通常不会太担心此类泄漏,因此我不会立即使用local
(local
)作为答案中唯一非POSIX部分的“区别”)。tee函数运行良好。我试图在同一时间拉链,但不能|tee“$directory\u name”“\u${FUNCNAME}.txt”>/dev/null如何将tee与上述行中的tar结合使用?