gpt4 book ai didi

linux - shell 脚本 - 如何在不在脚本中定义变量的情况下为 shell 脚本使用变量

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:22:40 25 4
gpt4 key购买 nike

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com