Linux 如何保存来自两个变量的更改?
我需要编写一个bash脚本,它检查新用户是否在5秒内登录,如果是,则打印其详细信息:名称、用户名。。。。。。 我已经有以下代码,用于检查新用户是否已登录:Linux 如何保存来自两个变量的更改?,linux,shell,Linux,Shell,我需要编写一个bash脚本,它检查新用户是否在5秒内登录,如果是,则打印其详细信息:名称、用户名。。。。。。 我已经有以下代码,用于检查新用户是否已登录: originalusers=$(users) sleep 5 newusers=$(users) if diff -u <(echo "$originalusers") <(echo "$newusers") then echo "Nothing's changed" exit 1 else echo "New user is l
originalusers=$(users)
sleep 5
newusers=$(users)
if diff -u <(echo "$originalusers") <(echo "$newusers")
then
echo "Nothing's changed"
exit 1
else echo "New user is logged in"
diff -u <(echo "$originalusers") <(echo "$newusers") >shell
originalusers=$(用户)
睡眠5
新用户=$(用户)
如果diff-u这里有一个。它是一个bash脚本,使用awk计算出口和入口
$ cat script.sh
#!/bin/bash
read -d '' awkscript <<EOF # awk script is stored to a variable
BEGIN{
split(now,n)
split(then,t)
for(i in n)
a[n[i]]++
for(j in t)
a[t[j]]--
for(i in a)
if(a[i])
print i, (a[i]>0?"+":"") a[i] " sessions"
}
EOF
while true # loop forever
do
sleep 1 # edit wait time to your liking
then="$now"
now="$(users)"
awk -v then="$then" -v now="$now" "$awkscript"
done
很多用户来来往往,真的没有地方测试它。这里有一个。它是一个bash脚本,使用awk计算出口和入口
$ cat script.sh
#!/bin/bash
read -d '' awkscript <<EOF # awk script is stored to a variable
BEGIN{
split(now,n)
split(then,t)
for(i in n)
a[n[i]]++
for(j in t)
a[t[j]]--
for(i in a)
if(a[i])
print i, (a[i]>0?"+":"") a[i] " sessions"
}
EOF
while true # loop forever
do
sleep 1 # edit wait time to your liking
then="$now"
now="$(users)"
awk -v then="$then" -v now="$now" "$awkscript"
done
很多用户来来往往,真的没有地方测试它。如果我正确理解了这个问题,您希望找到两个Bash变量之间的差异,并将差异保留在一个新变量中。一种可能是将差异结果保存到变量中:
diff_result=`diff -u <(echo "$originalusers") <(echo "$newusers")`
echo -e "diff result:\n$diff_result"
diff_result=`diff-u如果我正确理解了这个问题,您希望找到两个Bash变量之间的差异,并将差异保留在一个新变量中。一种可能是将差异结果保存到变量中:
diff_result=`diff -u <(echo "$originalusers") <(echo "$newusers")`
echo -e "diff result:\n$diff_result"
diff_result=`diff-u