繁体   English   中英

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

[英]Why can't I run my shell script to list users?

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

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

这是我的shell脚本。 问题是演出有误。 错误是---> users: command not found请给我解决方法

现在,按照代码的方式,我看到您没有将awk|sort命令的输出分配给变量(也许您想使用`代替'?)

这有效:

#!/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开头(请在此处阅读),您可以使其可执行(使用chmod u+x /tmp/myscript.bash ),然后调用它,只需键入/tmp/myscript.bash 您也可以将其保存在PATH目录之一中(键入echo $PATH以查看它们是哪个),然后使其可以在任何地方调用,但是我不建议这样做,因为您如果您不小心,可能会最终覆盖多汁系统的命令。 例如,假设您使用不幸的名称ls调用脚本,将其保存在$PATH的第一个目录中(在我的情况下为/usr/local/sbin )每次键入ls ,您都不会列出目录,但调用您的脚本...这很糟糕。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM