CSH 入门基础 1 -- csh与 bash 区别 及csh常用语法

文章目录

      • 1.1.1 csh 与 bash 差异
      • 1.1.2 CSH IF 语句
      • 1.1.3 CSH While 语句
      • 1.1.4 CSH 脚本实例

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 语句

#!/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

#!/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.4 CSH 脚本实例

# ps -aux | grep -irq "velwavegen"
# echo "who am i" | grep -q "who"
# if [ $? -ne 0]
# then
# 	echo "grep return a none-zero value, still capture waveform !!!"
# else
# 	echo "grep rerurn zero value ,finished"
# fi

if [-z "$1"]
then
	echo "use the default target string: walwavegen"
	set starget_str="velwavegen"
else
	echo "search string $1"
	set target_str=$1
fi
# ps -aux | grep -iq "$target_str"
set ret_val=1
while [ $set_val -eq 1]
do
	ps -aux | grep -iq "$target_str"
	if [ -z $? ] then
		echo "target task finished"
		exit
	else
		echo "`date` not find" $target_str, wait for 5s"
		sleep 5
	fi
done  

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

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

推荐阅读
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

你可能感兴趣的:(Tools,bash,开发语言,linux)