Chinaunix

标题: = =cut获取用户名跟uid一直提示找不到文件或者目录 [打印本页]

作者: ccv709598965    时间: 2016-05-12 17:06
标题: = =cut获取用户名跟uid一直提示找不到文件或者目录
#!/bin/bash
file=/etc/passwd
for a in $file
do
username=$a |cut -d ":" -f1
userid=$a |cut -d ":" -f3
done
请问哪里不对啊
作者: lyhabc    时间: 2016-05-12 19:06
sed试试
作者: 287380917    时间: 2016-05-13 15:46
$file跟$a,shell不知道你要干啥·····
  1. for a in `cat $file`
  2. do
  3. username=`echo $a |cut -d ":" -f1`
  4. userid=`echo $a |cut -d ":" -f3`
  5. done
复制代码

作者: ccv709598965    时间: 2016-05-16 09:43
你看,运行完就这样了,我要获取passwd的用户名和UID回复 3# 287380917


   
作者: 287380917    时间: 2016-05-16 10:32
回复 4# ccv709598965
你完整的脚本发出来看看。看提示应该是你把获取的结果当成命令又执行了,所以提示command not found


   
作者: lll1985911    时间: 2016-05-17 23:48
本帖最后由 lll1985911 于 2016-05-17 23:50 编辑

调试执行:
  1. [root@localhost ~]# sh -x test.sh
  2. + file=/etc/passwd
  3. + for a in '$file'
  4. + username=/etc/passwd
  5. + cut -d : -f1
  6. + userid=/etc/passwd
  7. + cut -d : -f3
  8. [root@localhost ~]#
复制代码
你的file=/etc/passwd这句,file这个变量引用的不是文件内容,而是文件的绝对路径。

改为如下再试试看:
  1. #!/bin/bash
  2. file=/etc/passwd
  3. for a in `cat ${file}`
  4. do
  5. username=$a |cut -d ":" -f1
  6. userid=$a |cut -d ":" -f3
  7. done
复制代码

作者: chenxians    时间: 2016-05-18 10:10
用awk就可以
awk -F ":" '{print $1,$3}' /etc/passwd
或者awk 'BEGIN{FS=":"}{print $1,$3}' /etc/passwd




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2