我试图将变量的值从密码生成器复制到剪贴板,但它不起作用

我试图将变量的值从密码生成器复制到剪贴板,但它不起作用
#!/bin/bash

echo "How many characters? 
read length

pass=sudo head /dev/urandom | tr -dc 'A-Za-z0-9\!\"#$\@\&\%\?' | head -c$length
sleep 1
echo "$pass"

echo $pass | xclip -sel c

如果我将其更改为,它会起作用$pass$length但这不是我想要复制到剪贴板的内容

答案1

有很多事情需要查看,但假设您的最初问题是关于将命令的输出保存为变量。


要将某些命令或管道的输出(STDOUT)保存为变量,您需要使用命令替换($()):

pass=$(head /dev/urandom | tr -dc 'A-Za-z0-9\!\"#$\@\&\%\?' | head -c "$length")

我做了两处修改:

  • 你不需要阅读root文件/dev/urandom,所以我放弃了sudo

  • 总是引用变量扩展(除非你知道自己在做什么);我已经引用了$length


另外,read可以显示提示字符串(参见-p选项),您不需要使用echo

read -p 'How many characters?' length

相关内容