gpt4 book ai didi

linux - shell脚本中的动态变量

转载 作者:太空宇宙 更新时间:2023-11-04 05:11:02 25 4
gpt4 key购买 nike

cat <<EOF > /etc/rotatescript/truncate.sh
FILENAME=/mnt/logs/filename
MAXSIZE=10000000000
FILESIZE=$(stat -c%s "$FILENAME")
if (( FILESIZE > MAXSIZE )); then
truncate -s 0 /mnt/logs/filename
else
echo “nope”
fi

正如你所看到的,我正在使用终端创建 shell 脚本文件。这里的问题是

FILESIZE=$(stat -c%s "$FILENAME")

当我执行上面的代码时,上面的值保存在FILESIZE变量中。因此FILESIZE的值被设置为一个常量。

然而,我希望每当我使用下面的命令实际运行这个 shell 脚本时,linux 每次都会动态地选择 FILESIZE 的值。

/etc/rotatescript/truncate.sh

最佳答案

您需要转义子 shell:

cat <<EOF > /etc/rotatescript/truncate.sh
FILENAME=/mnt/logs/filename
MAXSIZE=10000000000
FILESIZE=\$(stat -c%s "$FILENAME")
if (( FILESIZE > MAXSIZE )); then
truncate -s 0 /mnt/logs/filename
else
echo “nope”
fi

请注意 \$,因为 shell 实际上是在定界文档内执行替换,所以您需要对其进行转义以防止这种情况发生。您需要一个文字 $

关于linux - shell脚本中的动态变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55325209/

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