test=$(env | grep "USER" | cut -d "=" -f 2)
你自己分别执行这几个命令,看看结果就能明白了。
env是输出环境变量的命令,每个环境变量占一行,其中叫USER的环境变量中保存的就是用户名,输出的形式是 USER=用户名
grep命令用来将这一行提取出来。
cut命令能够按指定的分隔符来分割一行字符,-d 指定分隔符(你哪里觉得它是判断文件的??又不是test语句!),-f 指定要输出哪一段字符。很显然环境变量格式就是由=分割的两段字符串,所以 cut -d "=" -f 2 输出的就是=后面的部分,也就是实际用户名。
以上这三个命令用管道相连,共同完成任务。
此-f非彼-f。一个是在test命令中,一个是在grep命令中,意义完全不同。
#!/bin/bash
if [ $1=="redhat" ]
than
echo fedora
elif [ $1 =="fedora" ]
echo "redhat"
else
echo "please input again!"
cut是切割命令,参数-d表示按什么划分,参数-f表示截取哪些字段。
eg :env | grep "USER" 执行结果为:root=root
cut -d "=" -f 2 表示将其=号作为分隔符,选取其第2个字段,所有就是root