CSH 入门基础 1 — bash与 csh 差异 及csh常用语法介绍

CSH 入门基础 1 — bash与 csh 差异 及csh常用语法介绍本文介绍了 CSH CShell 的基础知识 包括它与 BASH 的主要差异 如命令使用 环境变量设置 变量操作和 IF WHILE SWITCH 语句的语法

大家好,欢迎来到IT知识分享网。


下篇文章:CSH 入门基础 2 – csh(C Shell)对文件/目录的判断及对参数的处理

CSH 背景

C Shell(csh)是一种Unix shell,由Bill Joy在1978年开发。它是BSD操作系统中的默认shell,也被许多其他Unix操作系统所采用。C Shell的语法和功能相对于Bourne shell(sh)有很大的不同,特别是在脚本编程方面。C Shell提供了许多高级功能,如命令行编辑、命令别名、历史记录、作业控制和脚本编程等。虽然C Shell在过去受到很多批评,但它仍然是许多Unix用户和管理员喜欢使用的一种shell。

1.1.1 CSH 与 BASH 差异

bash 的 shell 默认用户下面的配置文件是:.bashrc, 用户登陆之后,默认执行该配置文件内容,让环境变量生效;
csh 的 shell 默认用户下面的配置文件是:.cshrc, 用户登陆之后,默认执行该配置文件内容。

两者主要有以下区别

  • alias 命令使用差异:
    • csh 中不使用 = 号,如 alias g "gvim"
    • bash 中使用 =
  • 环境变量PATH 设置差异:
    • csh 对于环境变量 PATH 的配置 不能使用 ~ 符号,需要使用绝对路径,如:setenv PATH "${PATH}:/home/xxx/bin"
    • bash 可以使用 ~
  • 变量设置差异:
    • csh 设置变量时使用 set 命令,并且=号两边不能有空格,如 set a=pwd
    • bash 设置变量时不需要 set 命令,并且=号两边必须无空格,如 a=pwd
  • 环境变量设置差异:
    • csh 设置环境变量时使用 setenv 命令,如setenv PATH $PATH:/usr/local/bin
    • bash 设置环境变量时使用export 命令,并且=号两边不能有空格,如export PATH=$PATH:/usr/local/bin
  • $ 使用差异:
    • csh 引用变量时使用$符号,并且可以省略{}符号,如echo $a
    • bash 引用变量时也使用 $ 符号,但是如果变量名后面紧跟其他字符,则必须加上{}符号以区分变量名和其他字符,如 echo ${a}b

1.1.2 CSH IF 语句

condition是一个条件表达式,当其为真时,if语句块中的命令会被执行。如果condition为假,则会继续执行下一个else if语句块,直到找到一个条件为真的语句块,或者执行到最后的else语句块。

以下是一个使用if语句在csh中判断一个数是否为偶数的示例:

csh #!/bin/csh set num = 6 if ($num % 2 == 0) then echo "$num is even" else echo "$num is odd" endif 

在这个示例中,条件表达式是$num % 2 == 0,如果$num除以2的余数为0,则条件为真,输出”$num is even“。否则,输出”$num is odd“。

其它例子
执行 vusage 命令后,使用 awk 命令打印第二行,使用cut命令只取第40个字符,
判断该字符是否是“1”, 如果不是“1” 会进行 sleep 5s的操作。

#!/bin/csh set avail=`vusage | awk 'NR==2 {print}' | cut -c 40` # if ( 1 ) then; if ( $avail >= 1) then; echo "there are enough board for test, doing test..." else sleep 5 endif 

1.1.3 CSH While 语句

#!/bin/csh while (1) body end 
#!/bin/csh set i = 1 while ($i < 5) echo "i is $i" @ i++ end 

or
在这个示例中,循环体中的命令是输出变量i的值,并将i的值加1。当i的值小于5时,循环体中的命令会被重复执行。最终输出的结果是1到5的数字序列。

#!/bin/csh set i = 1 while (1) echo "i is $i" @ i++ if ($i >= 5) break end 

These output:

i is 1 i is 2 i is 3 i is 4 

1.1.3 CSH Switch 语句

以使用csh中的switch语句来实现多分支条件判断。具体语法如下:

switch (variable) case value1: command1 command2 ... breaksw case value2: command3 command4 ... breaksw ... default: command5 command6 ... endsw 

其中,variable是一个变量,需要被匹配到某个值。如果 variable 的值等于某个 case 的 value,那么该 case 中的命令会被执行。如果没有匹配到任何一个case,那么会执行default中的命令。

csh #!/bin/csh set num = 5 switch ($num) case 1: echo "The number is 1" breaksw case 2: echo "The number is 2" breaksw case 3: echo "The number is 3" breaksw default: echo "The number is greater than 3" endsw 

在这个示例中,判断$num的值,

  • 如果$num等于1,输出”The number is 1″,
  • 如果$num等于2,输出”The number is 2″,
  • 如果$num等于3,输出”The number is 3″,
  • 否则输出”The number is greater than 3″。

可以通过下面命令来执行CSHELL 脚本:

chmod +x myfile.csh csh myfile.csh or myfile.csh or ./myfile.csh 

下篇文章:CSH 入门基础 2 – csh(C Shell)对文件/目录的判断及对参数的处理


推荐阅读
https://people.math.sc.edu/Burkardt/examples/c_shell/c_shell.html
https://unix.stackexchange.com/questions//how-to-use-while-loop-in-csh-shell-command-prompt

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/127372.html

(0)
上一篇 2025-09-07 22:33
下一篇 2025-09-07 22:45

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信