Linux 为什么可以';我不能运行shell脚本来列出用户吗?
这是我的shell脚本。问题是那个节目是个错误。 错误为-->Linux 为什么可以';我不能运行shell脚本来列出用户吗?,linux,shell,unix,Linux,Shell,Unix,这是我的shell脚本。问题是那个节目是个错误。 错误为-->用户:未找到命令 请按现在的方式给我解决方案friends代码我看到您没有将awk | sort命令的输出分配给变量(可能您想使用“而不是”?) 这项工作: users='awk '{print $1}' /etc/passwd | sort -u' for user in $users do echo " - $user" done 虽然您应该知道,/etc/passwd不是用空格分隔的,所以awk'{print
用户:未找到命令
请按现在的方式给我解决方案friends代码我看到您没有将
awk | sort
命令的输出分配给变量(可能您想使用“而不是”?)
这项工作:
users='awk '{print $1}' /etc/passwd | sort -u'
for user in $users
do
echo " - $user"
done
虽然您应该知道,/etc/passwd
不是用空格分隔的,所以awk'{print$1}'
不会给您用户名(这可能是您想要的)
编辑:
根据@对您的问题的评论:如果您将此代码保存在一个文件中(比如/tmp/myscript.bash
)以运行它,您必须键入一个终端:
#!/bin/bash
users=$(awk '{print $1}' /etc/passwd | sort -u)
for user in $users
do
echo " - $user"
done
或者,因为它以
#开头/bin/bash
(阅读)您可以使其可执行(使用chmodu+x/tmp/myscript.bash
),然后调用它,只需键入/tmp/myscript.bash
。您也可以将它保存在PATH
目录中(键入echo$PATH
查看它们是哪一个),使其可执行,然后您就可以从任何地方调用它,但我并不建议您这样做,因为如果您不小心,可能会覆盖有趣的系统命令。例如,假设您使用不幸的名称调用脚本ls
,将其保存在$PATH
的第一个目录中(在我的示例中为/usr/local/sbin
),每次键入ls
,您将不会列出目录,而是调用您的脚本。。。这是不好的。按照现在的代码方式,我看到您没有将awk | sort
命令的输出分配给变量(可能您想使用“而不是”?)
这项工作:
users='awk '{print $1}' /etc/passwd | sort -u'
for user in $users
do
echo " - $user"
done
虽然您应该知道,/etc/passwd
不是用空格分隔的,所以awk'{print$1}'
不会给您用户名(这可能是您想要的)
编辑:
根据@对您的问题的评论:如果您将此代码保存在一个文件中(比如/tmp/myscript.bash
)以运行它,您必须键入一个终端:
#!/bin/bash
users=$(awk '{print $1}' /etc/passwd | sort -u)
for user in $users
do
echo " - $user"
done
或者,因为它以
#开头/bin/bash
(阅读)您可以使其可执行(使用chmodu+x/tmp/myscript.bash
),然后调用它,只需键入/tmp/myscript.bash
。您也可以将它保存在PATH
目录中(键入echo$PATH
查看它们是哪一个),使其可执行,然后您就可以从任何地方调用它,但我并不建议您这样做,因为如果您不小心,可能会覆盖有趣的系统命令。例如,假设您使用不幸的名称调用脚本ls
,将其保存在$PATH
的第一个目录中(在我的示例中为/usr/local/sbin
),每次键入ls
,您将不会列出目录,而是调用您的脚本。。。这是不好的。按照现在的代码方式,我看到您没有将awk | sort
命令的输出分配给变量(可能您想使用“而不是”?)
这项工作:
users='awk '{print $1}' /etc/passwd | sort -u'
for user in $users
do
echo " - $user"
done
虽然您应该知道,/etc/passwd
不是用空格分隔的,所以awk'{print$1}'
不会给您用户名(这可能是您想要的)
编辑:
根据@对您的问题的评论:如果您将此代码保存在一个文件中(比如/tmp/myscript.bash
)以运行它,您必须键入一个终端:
#!/bin/bash
users=$(awk '{print $1}' /etc/passwd | sort -u)
for user in $users
do
echo " - $user"
done
或者,因为它以
#开头/bin/bash
(阅读)您可以使其可执行(使用chmodu+x/tmp/myscript.bash
),然后调用它,只需键入/tmp/myscript.bash
。您也可以将它保存在PATH
目录中(键入echo$PATH
查看它们是哪一个),使其可执行,然后您就可以从任何地方调用它,但我并不建议您这样做,因为如果您不小心,可能会覆盖有趣的系统命令。例如,假设您使用不幸的名称调用脚本ls
,将其保存在$PATH
的第一个目录中(在我的示例中为/usr/local/sbin
),每次键入ls
,您将不会列出目录,而是调用您的脚本。。。这是不好的。按照现在的代码方式,我看到您没有将awk | sort
命令的输出分配给变量(可能您想使用“而不是”?)
这项工作:
users='awk '{print $1}' /etc/passwd | sort -u'
for user in $users
do
echo " - $user"
done
虽然您应该知道,/etc/passwd
不是用空格分隔的,所以awk'{print$1}'
不会给您用户名(这可能是您想要的)
编辑:
根据@对您的问题的评论:如果您将此代码保存在一个文件中(比如/tmp/myscript.bash
)以运行它,您必须键入一个终端:
#!/bin/bash
users=$(awk '{print $1}' /etc/passwd | sort -u)
for user in $users
do
echo " - $user"
done
或者,因为它以
#开头/bin/bash
(阅读)您可以使其可执行(使用chmodu+x/tmp/myscript.bash
),然后调用它,只需键入/tmp/myscript.bash
。您也可以将它保存在PATH
目录中(键入echo$PATH
查看它们是哪一个),使其可执行,然后您就可以从任何地方调用它,但我并不建议您这样做,因为如果您不小心,可能会覆盖有趣的系统命令。例如,假设您使用不幸的名称调用脚本ls
,将其保存在$PATH
的第一个目录中(在我的示例中为/usr/local/sbin
),每次键入ls
,您将不会列出目录,而是调用您的脚本。。。这很糟糕。你把脚本放在哪里了?它在你的道路上吗?它被标记为可执行文件吗?你把脚本放在哪里了?它在你的道路上吗?它被标记为可执行文件了吗?你在哪里找到的