我创建了 2 个脚本。第一个脚本名为“lock_logoff”,它的作用就是这个。它会在脚本中锁定帐户,然后注销帐户。第二个脚本会解锁帐户。当我女儿被禁止使用电脑时,我厌倦了去她电脑前手动执行此操作。
锁定脚本: sudo passwd -l 琥珀色 sudo pkill -u 琥珀色 echo "帐户已锁定并注销!尖叫声 3....2....1..." 解锁脚本: sudo passwd -u 琥珀色 echo "账户已解锁!"
我想做的是,由于这台计算机上有多个帐户,我想向脚本添加一个变量,这样我就不必有 3 个不同的锁定和解锁脚本。有没有办法我可以运行“lock_logoff jon”或“unlock amber”并运行该用户的脚本?
答案1
您绝对可以只使用一个脚本,而不是 3 个。为此,您只需从命令行传递参数即可。在每个 bash 脚本和函数中,都会自动生成一些称为位置参数的变量。在脚本的开头(即,当尚未执行其他命令时),您将拥有:
$0 : the name of the script
$1 : the 1st argument passed
$2 : the 2nd argument ...
请注意,这些参数受 IFS 和报价的影响,因此john doe
将计为 2 个参数,而 则"john doe"
计为 1 个参数。您可以阅读更多相关信息这里
读完参数后,您还必须确保用户确实存在(即您没有在调用脚本时出现拼写错误)。为此,您可以使用以下代码片段:
#!/bin/bash
user_name="$1"
#here, id returns 'true' if the user exists, else 'false'
#>/dev/null 2>&1 hides the output of the id command
if id -u "$user_name" >/dev/null 2>&1; then
sudo passwd -l "$user_name"
sudo pkill -u "$user_name"
echo "Account locked and logged off! Screaming in 3....2....1..."
else
echo "Error: user $user_name does not exist"
fi
现在,您可以像这样简单地调用您的脚本:./myscript amber
或者./myscript john