我在每次循环迭代中将一些命令输出保存到 bash 脚本中的变量中,例如 3。我想在迭代完成之前将这些变量保存在包含 3 个字段的纯文本数据库中
这个想法如下:
If..
Command output1 > $v1
Command output2 > $v2
Command output3 > $v3
echo $v1 $v2 $v 3 >> database.txt
fi
echo 变量调用对于将变量值存储到database.txt 有效吗?如果我们希望它们在纯文本中用制表符分隔怎么办?
答案1
在我构建的一个类似项目中,这个对我来说效果很好:
export TMPFILE=/tmp/yadvalues
function listselect {
echo "Args Received = $0, $1 , $2 , $3 , $4 , $5" #Display args send to function
echo -e "FILEID=\"$1\"\nFILENAME=\"$4\"\nFILECOMMAND=\"$5\"" > $TMPFILE
# Save some of the args in file
}
#export -f listselect
function filedisplay {
source $TMPFILE
ftd=$(yad --title="File Display-$FILENAME" --width=800 --height=500 \
--center --text-info --filename=$FILENAME --wrap --editable \
--button="Go Back":0)
# Use var $FILENAME present in $TMPFILE
}
#export -f filedisplay
答案2
您发布的代码将根据以下命令将命令的标准输出捕获到文件名中价值观& 等变量$v1
。如果这就是您正在做的事情,那么:不,最后的 echo 语句不会产生内容这三个文件,而是这三个文件名字。
如果您希望将这三个命令的输出以制表符分隔保存到文件中database.txt
,请执行以下操作:
printf "%s\t%s\t%s\n" "$(Command output1)" "$(Command output2)" "$(Command output3)" >> database.txt