侧边栏壁纸
博主头像
Zengyq's Blog博主等级

但行好事,莫问前程!

  • 累计撰写 4 篇文章
  • 累计创建 10 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

C-Shell

zengyq
2024-09-02 / 0 评论 / 0 点赞 / 78 阅读 / 4929 字 / 正在检测是否收录...
温馨提示:
本文最后更新于 2024-09-26,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。
  • 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 语言类似

CShell1.png

CShell2.pngCShell3.png

CShell4.png

CShell5.png

数组

# 定义数组
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

awk、grep、sed

https://zengyq.cn/?p=40c22e78-a9d8-42e7-84bd-ceb0a459fc69

0

评论区