gpt4 book ai didi

Shell 脚本将命令列表作为输入,尝试执行它们,但失败了

转载 作者:行者123 更新时间:2023-12-01 10:07:18 24 4
gpt4 key购买 nike

与许多尝试编写算法的非工程师或非数学家一样,我是一个直觉型的人。我确切的心理类型让我很难学习任何严肃的东西,比如计算机或数学。一般来说,我更喜欢音频,因为我可以在学习过程中更有效地发挥我的想象力。

就是说,我正在尝试编写一个 shell 脚本来帮助我掌握 Linux。为此,我将 O'Reilly 网站索引中的 Linux 命令列表复制并粘贴到 Python In a Nutshell 一书中。我怀疑他们会介意,我感谢他们提供。这些是文本文件“massivelistoflinuxcommands”,为了节省空间,下面没有完整包含...

好的,现在到了有趣的部分。我如何让这个脚本工作?

#/bin/sh
read -d 'massivelistoflinuxcommands' commands <<EOF

accept
bison
bzcmp
bzdiff
bzgrep
bzip2
bzless
bzmore
c++
lastb
lastlog
strace
strfile
zmore
znew


EOF

for i in $commands
do

$i --help | less | cat > masterlinuxnow

text2wave masterlinuxnow -o ml.wav

done

最佳答案

当您包含错误消息或某些偏离预期行为的特定方式时,它真的很有帮助。

但是,你的问题在这里:

read -d 'massivelistoflinuxcommands' commands <<EOF

应该是:

read -d '' commands <<EOF

read 的定界符导致它在找到与字符串中第一个字符匹配的第一个字符时停止,因此它在“bzc”处停止,因为下一个字符是“m”,它匹配“massive...”开头的“m”

此外,我不知道这应该做什么:

$i --help | less | cat > masterlinuxnow

但它可能应该是:

$i --help > masterlinuxnow

但是,您应该能够直接通过管道传输到 text2wave 并跳过创建中间文件:

$i --help | text2wave -o ml.wav

此外,您可能希望防止每个文件覆盖前一个文件:

$i --help | text2wave -o ml-$i.wav

这将创建名为“ml-accept.wav”和“ml-bison.wav”的文件。

我要指出的是,如果您正在学习 Linux 命令,则应该根据使用频率和/或对初学者的适用性来确定它们的优先级。例如,您可能不会立即使用 bison

关于Shell 脚本将命令列表作为输入,尝试执行它们,但失败了,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3470368/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com