C Shell 脚本,第一行最好使用
#!
来指定解释器,如:#!/bin/tcsh -f
上面的 -f 告诉 Shell 程序不要获取用户的配置文件,这样避免了脚本对用户设置的依赖
使用 # 写单行注释
运行脚本前,需用 chmod 命令给脚本加上执行权限
使用【csh 脚本名】运行脚本 ,如:csh test.sh
变量
# 设置变量
set x = 123
# 使用变量
echo ${x}
# 删除变量
unset x
环境变量
环境变量也称为全局变量,可以应用到任何 shell 脚本或者是用户调用的编辑器中。按惯例,环境变量名都是大写的。setenv
定义的变量将被此 shell 派生的所有子 shell 继承。
# 给环境变量赋值
setenv VAR_NAME value
# 删除环境变量
unsetenv VAR_NAME
一些 C shell 预定义的环境变量:
HOME
:用户主目录USER
:用户名PATH
:搜索命令的路径PWD
:当前目录,该值从 cwd 拷贝而来SHELL
:默认使用的 shell
获取变量
${var}
${#var} # var 中元素的个数
${?var} # 如果设置了 var,则返回 1,否则返回 0
${#argv} # 参数的个数
$0 # 程序的名称
${argv[n]} # 命令行上第 n 个参数,n = 1 ~ 9
${n} # 和 ${argv[n]} 功能一样
$< # 从标准输入中读入一行
运算符
与 C 语言类似
数组
# 定义数组
set arr = (value1 value2 value3)
# 输出数组中所有元素
echo $arr
echo $arr[*]
# 输出数组中第一个元素(不是下标!)
echo $arr[1]
# 查看数组元素的个数
echo $#arr
# 删除数组
unset arr
if
if(expr1) then
操作1
else if(expr2) then
操作2
else
操作3
endif
switch
set x = $< # 从命令行读取内容
switch($x) # switch 后面没有冒号[:]
case 1:
echo "x = 1"
breaksw
case 2:
echo "x = 2"
breaksw
case 3:
echo "x = 3"
breaksw
default:
echo error
breaksw
endsw
foreach
set array = (2 3 4 5 6)
set cnt = 4
foreach obj ($array)
if($obj >= $cnt) then
echo "check pass!"
else
echo "check fail!"
endif
end
while
set array = {2 3 4 5 6}
set cnt = 4
set num = 0
while($num <= $#array)
if($cnt == $array[$num]) then
echo $num
echo "pass !"
break
else
@ num++ # '@' 用于执行算术运算
echo "false"
endif
end
算术运算(@)
@ var = 5 + 5
echo $var
@ v2 = $var + 3
echo $v2
>和>>
使用 > 和 >> 都表示向结果重定向到一个文件中,区别在于 > 是覆盖式的重定向,会先将内容先清空,然后再将结果输入,而 >> 是追加式的重定向,是将要输入的内容追加在在已存在的内容后面,并不会清空文件。
命令替换
通过 set 来执行命令,且结果赋值给变量。
# 执行命令 date,结果赋值给 d
set d = `date`
echo $d
评论区