为什么我不能运行我的shell脚本来列出用户?

时间:2014-04-05 18:13:17

标签: linux shell unix

users='awk  '{print $1}' /etc/passwd | sort -u'

for user in $users
 do
      echo " - $user"
done

这是我的shell脚本。问题是显示错误。 错误是---> users: command not found 请给我解决方案frinds

1 个答案:

答案 0 :(得分:3)

使用代码的方式现在我看到你没有将awk|sort命令的输出分配给变量(也许你想使用`而不是&#39;?)< / p>

这有效:

#!/bin/bash

users=$(awk  '{print $1}' /etc/passwd | sort -u)

for user in $users
do
      echo " - $user"
done

虽然你应该知道/etc/passwd没有空格分隔,但awk '{print $1}'不会给你用户的名字(可能就是你想要的)

修改:

根据@ Andy Lester对您的问题的评论:如果您将此代码保存在文件中(让我们说/tmp/myscript.bash)来运行它,您必须输入终端:

/bin/bash /tmp/myscript.bash

或者,因为它以#!/bin/bash开头(阅读here),您可以将其设为可执行文件(使用chmod u+x /tmp/myscript.bash)然后调用它,只需键入/tmp/myscript.bash即可。您也可以将其保存在其中一个PATH目录中(键入echo $PATH以查看它们),使其可执行,然后您就可以从任何地方调用它,但我不能#39; t真的建议这样做,因为如果你不小心,你最终可能会覆盖多汁的系统命令。例如,假设您使用不幸的名称ls调用脚本,将其保存在$PATH的第一个目录中(在我的情况下,/usr/local/sbin)每次你键入ls,你不会列出目录,但是调用你的脚本......哪个不好。