我想编写一个脚本,假设有两个变量CURRENT_USER
和USER_LIST
。然后,只要CURRENT_USER
的值发生变化,它就会自动附加到USER_LIST
。例如。
# The value of the USER_LIST should change automatically
# having to check the variable CURRENT_USER explicitly.
CURRENT_USER="U1" # USER_LIST="U1"
CURRENT_USER="U2" # USER_LIST="U1 U2"
CURRENT_USER="U3" # USER_LIST="U1 U2 U3"
CURRENT_USER="U4" # USER_LIST="U1 U2 U3 U4"
请告诉我是否可以使用shell脚本。
答案 0 :(得分:3)
您可以使用
声明一个被困的变量declare -t CURRENT_USER
然后使用 DEBUG 陷阱。请参见示例12.2.3.1 here
在您的情况下,陷阱将是一个函数,如果它不存在,则会将CURRENT_USER
的新值输入到列表中。
<强>更新强>
正如 chepner 指出的那样,您不需要标记变量。建立 DEBUG 陷阱就足够了:
trap 'monitor_current_user $CURRENT_USER' DEBUG
其中monitor_current_user是一个shell函数,用于记录(如果需要)此变量的值更改。
答案 1 :(得分:3)
如何使用函数更改CURRENT_USER
而不是直接设置它?
switch_user() {
CURRENT_USER=$1
USER_LIST="${USER_LIST} ${CURRENT_USER}"
}
switch_user U1
switch_user U3
(该示例不检查USER_LIST
中的重复项以保持简单)