文章目录

CSH 背景1.1.1 csh 与 bash 差异1.1.2 CSH IF 语句1.1.3 CSH While 语句1.1.3 CSH switch 语句

下篇文章: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/392436/how-to-use-while-loop-in-csh-shell-command-prompt

参考链接

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: