Так много всего, на что можно обратить внимание, но при условии, что ваш первоначальный вопрос заключается в сохранении вывода команды в качестве переменной.
Чтобы сохранить вывод (STDOUT) некоторых команды или конвейера в качестве переменной, вам нужно использовать подстановку команд ($()):
pass=$(head /dev/urandom | tr -dc 'A-Za-z0-9\!\"#$\@\&\%\?' | head -c "$length")
Я сделал два изменения:
вам не нужно быть [ f4], чтобы прочитать файл /dev/urandom, поэтому я уронил sudo, всегда добавляя расширения переменных (если вы не знаете, что делаете); Я цитировал $lengthКроме того, read может отображать строку приглашения (см. Опцию -p), вам не нужно использовать echo:
read -p 'How many characters?' length
Отвечал на мой собственный вопрос. поддержка башенщика была добавлена в pandoc 1.9 (2012-02-05), но мой рабочий стол Ubuntu 11.10 имеет pandoc 1.8.1.1.
Я обновил pandoc следующим образом:
sudo apt-get autoremove pandoc
sudo apt-get install cabal-install
cabal update
cabal install pandoc
Notice последние две команды не используют sudo.