gpt4 book ai didi

linux - 为什么使用 "set var = value"采购脚本会破坏 $@?

转载 作者:行者123 更新时间:2023-12-04 19:34:19 26 4
gpt4 key购买 nike

我正在尝试在我的 Centos VM 上配置自动注销。我注意到如果我在/etc/profile.d/autologout.sh 创建一个文件,其中只有 set autologout = 30在文件中,然后它会中断任何来自/etc/profile 的脚本的传递参数。

显示这一点的示例脚本是:

#!/bin/bash 
source /etc/profile
echo ${@}

当我运行它时,脚本只看到参数“autologout 30”并且它没有得到任何我在运行时尝试传递它的参数。

无论自动注销脚本的名称、属性的名称是什么,或者我是否有 set autologout 30,都会发生这种情况。反而。

有人可以解释发生了什么吗?好像 autologout.sh 正在劫持参数。我对正在发生的事情感到茫然,研究 profile.d 和 set 命令什么也没发现。

最佳答案

set不用于修改 POSIX 兼容 shell 中的 shell 变量。相反,当给定位置参数时,它会修改命令行参数列表。

如果你只想给一个变量赋值,不要使用set .相反,您的文件应该只包含:

autologout=30

...和 ​​ "$@"将保持其原始状态。

关于linux - 为什么使用 "set var = value"采购脚本会破坏 $@?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47420197/

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