Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 如何保存来自两个变量的更改?_Linux_Shell - Fatal编程技术网

Linux 如何保存来自两个变量的更改?

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

我需要编写一个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 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