Raspbian (Jessy) - root@Raspberry Pi - Putty
在终端中输入
finalanswer=0
现在我得到了一个包含这段代码的脚本
#!/bin/bash
source /lib/lsb/init-functions
echo $finalanswer #just as a test
if [ ! "$finalanswer" = "0" ]
then
rm -r mnt/objects/all
log_warning_msg "All Files has been deleted" || true
touch its_over.txt
else
let finalanswer=1
log_action_msg "Var finalanswer was 0. setting back to 1" || true
fi
有一个 cronjob 每小时启动这个脚本
太好了。某处一定有错误。 因为他将变量 $finalanswer 视为空。
这意味着在此脚本之外定义的变量将不起作用?
我该如何解决这个问题?
最佳答案
Shell 变量不会被子进程继承。如果你想让一个变量被继承,它必须是一个环境变量。您可以使用 export
命令创建环境变量。
export finalanswer=0
或
finalanswer=0
export finalanswer
您还可以通过将赋值放在命令的开头来仅在命令执行期间导出变量:
finalanswer=0 /path/to/script
请注意,您在 shell 中分配的变量不会可用于 cron
作业。变量只能导出到 shell 后代的进程,cron
运行的进程与您的 shell 进程无关。如果您想设置一个变量用于 cron
作业,您可以将赋值放入 crontab 文件本身。
关于linux - shell 脚本 - 如何在不在脚本中定义变量的情况下为 shell 脚本使用变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35586093/