#!/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