linux – Shell Scripting:在shebang中使用grep和tr
发布时间:2020-12-14 01:19:20 所属栏目:Linux 来源:网络整理
导读:我的系统上有这个脚本: #! /bin/grep catcaterpillarcatlolmorecat 当我运行它时,我得到了预期的输出, #! /bin/grep catcaterpillarcatmorecat 但是,如果我使用tr而不是脚本 #! /usr/bin/tr 'a' 'e'caterpillarcatlolmorecat 我希望得到 #! /usr/bin/tr 'a'
我的系统上有这个脚本:
#! /bin/grep cat caterpillar cat lol morecat 当我运行它时,我得到了预期的输出, #! /bin/grep cat caterpillar cat morecat 但是,如果我使用tr而不是脚本 #! /usr/bin/tr 'a' 'e' caterpillar cat lol morecat 我希望得到 #! /usr/bin/tr 'a' 'e' ceterpiller cet lol morecet 但是没有打印,如果我手动输入cat,我会得到c / t.如何将脚本更改为像第一个一样? 解决方法
shebang行只支持一个参数.字面上包含空格,没有引用.所以你在那里运行的命令与shell相同:
tr "'a' 'e'" 如果你运行它,你会看到tr抱怨缺少第二个参数.那么为什么你的剧本不抱怨?那是第二个问题. shebang cat或grep工作,因为cat和grep将输入文件的名称作为参数,shebang将脚本的名称添加到参数列表中. (这是#!/ bin / sh脚本作为/ bin / sh scriptname执行的基本情况所必需的) 你正在跑步 tr "'a' 'e'" yourscriptname 它给了tr它需要的2个参数,然后它从stdin读取,从你不想要的一组字符翻译成你不想要的另一组字符. 如果shebang系列有一个功能齐全的shell解析器,你可以使用 #!/usr/bin/tr 'a' 'e' < 添加到末尾的文件名将成为输入.但是shebang在内核中只是一个简单的东西,并不是那么特别. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |