users='awk '{print $1}' /etc/passwd | sort -u'
for user in $users
do
echo " - $user"
done
这是我的shell脚本。问题是显示错误。
错误是---> users: command not found
请给我解决方案frinds
答案 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
,你不会列出目录,但是调用你的脚本......哪个不好。