如何仅在脚本的某个步骤设置一个由其他命令的结果组成的变量?
PENULTIMATE_F="$(ls -t "${LOGS_DIR_DS}" | head -n 2 | tail -1)"
LAST_F="$(ls -t "${LOGS_DIR_DS}" | head -n 1)"
目前,这些值不是执行脚本代码时在目录中创建的最新两个文件,而是脚本开头的那些文件。
解释和回答 :我需要这个用于我编写的监控脚本。问题完全不同,我不会发疯 - 这是件好事。如果在函数的稍后阶段初始化变量 - 它会加载当前和预期的内容。 我的问题实际上是创建一个空文件 - 因为它没有内容 - 一个简短的“if”函数,无论它是否存在,如果不存在 - 创建它......好吧,实际上最后一个文件是创建的,直到那个后来的那一刻完全是因为事先没有真正的内容被“回复”到该文件中。
感谢您提供的线索,这些线索确实让我相信错误发生在其他地方!
答案 0 :(得分:1)
简单回答:稍后初始化变量。
或:使用函数而不是变量。然后,您可以随时调用这些函数以获得更新的结果。
penultimateFile() { ls -t "${LOGS_DIR_DS}" | head -n 2 | tail -1; }
lastFile() { ls -t "${LOGS_DIR_DS}" | head -n 1; }
PENULTIMATE_F=$(penultimateFile)
LAST_F=$(lastFile)