C Shell脚本使用冒号打印路径名称

时间:2012-04-10 02:47:37

标签: shell

我正在尝试打印位于文件.chsrc中的路径,这些路径很容易使用echo $ path路径打印,但我需要在列出的每个路径的末尾添加一些东西。即:

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

我无法编辑或更改.chsrc文件。我也尝试在C Shell中找到关于连接的东西,但是在我看到的C Shell中,它似乎并没有真正“存在”。如果我听起来很傲慢,我很抱歉,我是C Shell的新手。如果有人有任何指示,建议总是很棒!谢谢!

1 个答案:

答案 0 :(得分:0)

echo "$PATH" | sed 's/:/: /g;s/ *$//' 

's/'=替代,'/:/: /'= targetPattern / replacmentPattern,'g'=全局替换(在当前行上),';' =命令分隔符,'s/ *$//'=替换行末尾的任何尾随空格'$',replacementPattern ='//'=(没有,空,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个空格,{{1}内的空格保持原样,尽可能多的“变量”和“文本字符串”旁边的变量不会自动插入空格字符,您必须将它们放入。

我不认为这个问题有任何傲慢态度; - )

但是......在你使用2速贝壳(( - ())度过8年以上之前,请阅读A great Unix Primer处的所有内容,尤其是Why csh is less than perfect scripting language; - )

P.S。欢迎使用StackOverflow(SO)请记住阅读常见问题解答,http://tinyurl.com/2vycnvr,使用灰色三角形http://i.imgur.com/kygEP.png投票选择好的Q / A,并接受最能解决问题的答案,如果任何,通过勾选复选标记,http://i.imgur.com/uqJeW.png