在下面的示例中,我想在屏幕上打印文本,并在变量cpstdout
设置为1时将此文本附加到文件中。否则只在屏幕上打印文本。我需要使回声部分对append
变量具有灵活性。有没有办法纠正我的代码?
#!/bin/ksh
cpstdout=1
if [ $cpstdout -eq 1 ]; then
append="| tee somefile"
else
append=""
fi
echo "test string" $append
现在结果如下:
./test.sh
test string | tee somefile
- 当然没有创建文件
打印功能的例子:
print_output(){
printf "\t/-------------------------------------------------\\ \n"
for i in "$@"; do
printf "\t| %-14s %-32s |\n" "$(echo $i | awk -F, '{print $1}')" "$(echo $i | awk -F, '{print $2}')"
shift
done
printf "\t\-------------------------------------------------/\n"
}
答案 0 :(得分:1)
将附加命令定义为函数:
ngIf
然后,在output_with_append() {
tee -a somefile <<<"$1"
}
中,将变量设置为适当的输出函数:
if
最后,使用变量扩展来运行命令:
if [ $cpstdout -eq 1 ]; then
output=output_with_append
else
output=echo
fi
请注意,我已使用$output "test_string"
,因为您说您想要附加到文件而不是覆盖它。
将tee -a
设置为cpstdout
,以便我们可以通过命令行参数来控制它:
$1
示例会话如下所示:
cpstdout="$1"