Linux Bash脚本-不传递任何值

Linux Bash脚本-不传递任何值,linux,bash,amazon-web-services,Linux,Bash,Amazon Web Services,我的目标是创建一个bash脚本,它可以向Ec2添加新用户,并允许访问ssh密钥,但我有一点问题 这是我的当前脚本,只要需要生成私钥/公钥,脚本就会停止,因为它需要密码短语。如何将脚本配置为只按enter键 #!/bin/bash username=$1 ssh-keygen -b 1024 -f $username -t dsa chmod 600 $username.pub useradd $username mkdir /home/$username/.ssh chmod 700 /ho

我的目标是创建一个bash脚本,它可以向Ec2添加新用户,并允许访问ssh密钥,但我有一点问题

这是我的当前脚本,只要需要生成私钥/公钥,脚本就会停止,因为它需要密码短语。如何将脚本配置为只按enter键

#!/bin/bash

username=$1

ssh-keygen -b 1024 -f $username -t dsa
chmod 600 $username.pub
useradd $username
mkdir /home/$username/.ssh
chmod 700 /home/$username/.ssh
chown ball:ball /home/$username/.ssh
cat ball.pub >> /home/$username/.ssh/authorized_keys
chown 600 /home/.ssh/$username/authorized_keys
chown ball:ball /home/$username/.ssh/authorized_keys

[root@ip-172- /]# ssh-keygen -b 1024 -f ball -t dsa
Generating public/private dsa key pair.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in ball.

您可以通过管道将空行传输到
ssh-keygen

ssh-keygen -b 1024 -f ball -t dsa <<< ''
或从
/dev/null
读取:

ssh-keygen -b 1024 -f ball -t dsa < /dev/null
ssh-keygen-b102f-ball-tdsa
您可能想了解
$username
是否包含一个空格,您的代码将在多个位置断开。这似乎有点奇怪。通常最好询问实际问题,而不是试图解决的问题。您的脚本也相当危险——您至少应该测试
$1
是否实际通过,这样您就不会在整个过程中造成严重破坏。类似于
if[[“$1”==”];然后回显“用法:$0用户名”>&2;出口1;fi
@JoneJamson使用
-x
标志运行可能会告诉您出了什么问题:
bash-x my_script.sh
您好,您可以看看这个。我压力很大out@JoneJamson请阅读我关于“代码> -X/CODE”的评论。你能帮我吗?J.J. Jejnson看到第31行,然后看到你的问题得到了答案,考虑问一个新的问题。
ssh-keygen -b 1024 -f ball -t dsa < /dev/null