我正在使用以下命令将命令输出发送到文件中:
logs/`basename $0`-`basename $1`.`date +%F--%R\`.log
而且由于相同的语法属于几个不同的 shell 脚本,我真的希望它只出现一次。我的第一个想法是将它放在另一个 shell 脚本中:
export LOGFILE=logs/`basename $0`-`basename $1`.`date +%F--%R`.log
# OR
export LOGFILE=logs/\`basename $0\`-\`basename $1\`.\`date +%F--%R\`.log
让每个文件调用这样的命令:
java CMD | tee $LOGFILE
但是这不起作用。有什么方法可以描述一个文件,以您在上面看到的方式创建一次,但能够在脚本中重复引用它?
最佳答案
一种解决方案是在 shell 脚本中定义一个函数...
但您几乎可以将其用于导出。如果您想继续这样做,关键是要转义 $ ,这样在您准备好之前它们不会被替换为它们的值。然后使用 eval
稍后重新计算它。
例如:
501 ~$ export foo='$bar'
502 ~$ echo $foo
$bar
503 ~$ export bar=moo
504 ~$ eval echo $foo
moo
505 ~$ export bar=hello
506 ~$ eval echo $foo
hello
关于linux - 在多个 Shell 脚本中执行相同的命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1095147/