【问题标题】:C Shell Script Print Path name with ColonC Shell 脚本打印带冒号的路径名
【发布时间】:2012-04-22 09:00:39
【问题描述】:

我正在尝试打印位于文件 .chsrc 中的路径,该文件只需回显 $path 即可轻松打印,但我需要在列出的每个路径的末尾添加一些内容。即:

/opt/local/bin: /usr/ucb: /usr/bin:

我无法编辑或更改 .chsrc 文件。我还试图在 C Shell 中找到一些关于连接的东西,但从我读到的内容看来,这在 C Shell 中似乎并不真正“存在”。无论如何,如果我听起来很自大,我很抱歉,我是 C Shell 的新手。如果有人有任何指示,建议总是很棒的!谢谢!

【问题讨论】:

  • 所以您希望能够通过在每个冒号后添加一个空格来“检查”路径中的元素?
  • 编辑.login 文件,使其:setenv SHELL /bin/bash; exec bash -l。它不会改变.chsrc,而是给你留下一个文明的外壳。

标签: shell


【解决方案1】:
echo "$PATH" | sed 's/:/: /g;s/ *$//' 

's/'=substitute, '/:/: /'=targetPattern/replacmentPattern, 'g'=全局替换(在当前行), ';'= 命令分隔符, 's/ *$// '= 替换行尾的任何尾随空格 '$', replacementPattern='//'=(nothing, empty, nada, zilch;-)

最好总是回显由 dbl-quotes 包围的任何 env var,除非您希望变量中的任何空格导致命令行评估中的分词。尤其是 PATH,因为空格字符在路径中是合法的。

一般来说,串联在 CSH 中的工作方式是这样的

set var1 = text1
set var2 = myText

echo "someText "$var1     "  more stuff"$var2
# -----------^^^^^^^^^^^^^^^^--- deliberate, copy paste as is

我没有用于打印输出的 csh,但是剪切并粘贴这些行,您会看到" .... " 之外的空格减少到 1 个空格,"...." 内部的空格保持原位, 尽可能多的 AND 变量,在“文本字符串”旁边出现,不会自动插入空格字符,你必须把它们放进去。

我看不出这个问题有任何傲慢;-)

但是...在您使用 2nd rate shell ( ;-( ) 度过 8 年以上的生命之前,请阅读 A great Unix Primer 的所有内容,尤其是 Why csh is less than perfect scripting language ;-)

附:欢迎来到 StackOverflow (SO) 请记住阅读常见问题解答,http://tinyurl.com/2vycnvr,使用灰色三角形为好的 Q/A 投票,http://i.imgur.com/kygEP.png,并接受最能解决您的问题的答案,如果有的话,按复选标记,http://i.imgur.com/uqJeW.png

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-10
    • 1970-01-01
    • 1970-01-01
    • 2018-09-09
    • 2013-05-18
    • 1970-01-01
    相关资源
    最近更新 更多