【问题标题】:Linux tr commandLinux tr 命令
【发布时间】:2012-11-26 21:10:37
【问题描述】:

我对在 c-shell 中编程比较陌生,并且遇到了 tr 命令的问题。当我执行脚本时,我收到的错误消息是“找不到 tr 命令”。我还尝试在分配给变量的 foreach 循环中显示文件的内容。这实际上只会打印文件路径的名称或其内容吗?这是我的代码:

#! /bin/csh

set path = /home/students/fall2012/crn12143/ford/friend_list

foreach i ($path)
echo $i | tr '[a-z]' '[A-Z]'
end

【问题讨论】:

  • 不要在csh 中编写脚本。 faqs.org/faqs/unix-faq/shell/csh-whynot
  • 只会打印文件名。使用cat $i 将文件一次打印到您的屏幕上。祝你好运。
  • @shellter 我想通了!完美显示文件内容,谢谢

标签: linux csh


【解决方案1】:

您正在破坏路径,因此它无法再找到tr。更改路径,如:

set path=(/home/students/fall2012/crn12143/ford/friend_list $path)

由于您并没有真正使用应该使用的path,因此您应该考虑将该变量重命名为其他名称。

如果您仍想删除大部分路径,请使用tr 命令的完整路径:

echo $i | /path/to/tr '[a-z]' '[A-Z]'

【讨论】:

  • 小写路径和大写路径一样吗?
  • @shiplu.mokadd.im,这是个好问题。我的 .cshrc 中都有两个,所以我只是将它们都粘贴在这里。我不确定有什么区别。我需要记得评论这些更改,这样我才能记住我做出这些更改的原因。
  • @shiplu.mokadd.im Unix 路径区分大小写。
  • @JonathanRioux 我的意思是path,变量名。
【解决方案2】:

您正在重新定义 PATH 环境变量,这不好。

您应该使用不同的变量名,例如:

set folder = /home/students/fall2012/crn12143/ford/friend_list

【讨论】:

  • 非常感谢您的帮助,我将路径变量重命名为文件夹,并获得了将其从小写转换为大写的脚本。如何提取此文件夹的内容并使用 foreach 将它们打印到屏幕上?
猜你喜欢
  • 2018-09-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-18
  • 2013-01-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多