1.C shell/TC shell常用语法和结构

(1) shbang行: #!/bin/sh,通知内核使用哪种内核解释脚本;

#!/bin/csh 或 #!/bin/tcsh

(2) 注释: 以#开头;

#This is a comment

(3) 通配符: *等;

(4) 显示输出: echo “***”;

echo "Hello!"

(5) 局部变量设置: set variable_name=value;

set name="Tom"

(6) 全局变量设置: setenv VARIABLE_NAME value;

setenv PRINTER shakespeare

(7) 提取变量值: echo $variable_name;

echo $anme
echo $PRINTER

(8) 读取用户输入:通过$<从用户输入中读取一行并将其赋给一个变量,如set name=$<;

echo "What's your name?"
set name=$<

(9) 脚本命令行参数: scriptname arg1 arg2 arg3 ...,其中arg1,arg2,arg3...将依次赋给$1,$2,$3...(或者$argv[1], $argv[2], $argv[3]...);使用echo $*(或echo $argv[*])可以显示所有命令行参数;

scriptname arg1 arg2 arg3 ...
echo $1 $2 $3
echo $*
echo $argv[1] $argv[2] $argv[3]
echo $argv[*]

(10) 数组:用空格隔开的一系列词组成的词表,由一对圆括号括起来; 注意,使用索引访问数组中的某个单词,索引值从1开始,而不是从0开始;

set word_list = (word1 word2 word3)
set names = (Tom Harry)
shift names
echo $word_list[1]
echo $word_list[2]
echo $word_list or echo $word_list[*]

(11) 算术运算: 保存算数运算结果的变量必须以一个@符号加一个空格开头;

@ n = 5+5
echo $n

注1:符号@后面以及运算符两侧都必须有空格;

(12) 条件语句(if结构与switch结构)

#if结构
if(expression) then
block of statements
endif #if/else结构
if(expression) then
block of statements
else
block of statements
endif #if/else if/else结构
if(expression) then
block of statements
else if(expression) then
block of statements
else if(expression) then
block of statements
else
block of statements
endif
switch (variable_name)
case constant1:
statements
case constant2:
statements
case constant3:
statements
default:
statements
endsw

(13) 循环语句(while循环与foreach循环)

while(expression)
block of statements
end foreach variable (word list)
block of statements
end

(14) 文件测试

-r  当前用户可以读该文件
-w 当前用户可以写该文件
-x 当前用户可以执行该文件
-e 该文件存在
-o 该文件属于当前用户
-z 该文件长度为0
-d 该文件是一个目录
-f 该文件是一个普通文件

2.C shell/TC shell示例(比较有趣,可以发送邮件)

#!/bin/csh  #如果该句末尾加上-f,则表示不要执行.cshrc文件;通常情况下,每当一个新的csh程序启动时,会自动执行一个初始化文件;
# The party program-invitations to friends from the "guest" file set guestfile=~/guests
if( ! -e "$guestfile") then
echo "$guestfile:t non-existent" #注意,:t比较有意思,如果不添加,会显示guestfile的完整名字,如果添加,则只显示guests;
exit 1
endif setenv PLACE "Sarotini's"
@ Time='date +%H' + 1 set food=( cheese crackers drinks "hot dogs" ) foreach person (`cat $guestfile`)
if( $person =~ root ) continue
mail -v -s "Parity" $person <<FINIS #start of here document
Hi $person! Please join me at $PLACE for party!
Meet me at $Time o'clock.
I'll bring the ice cream. Would you please bring $food[1] and
anything else you would like to eat? Let me know if you can
make it. Hope to see you soon.
Your pal,
ellie@`hostname`
FINIS
shift food
if( $#food ==0 ) then
set food=( cheese crackers drinks "hot dogs" )
endif
end

shell脚本,shell语法和结构(以Cshell/TC shell为例)的更多相关文章

  1. Linux Shell脚本简单语法汇总(Deepin下运行)

    整理自: https://www.runoob.com/?s=shell Shell 脚本(shell script),是一种为 shell 编写的脚本程序. 业界所说的 shell 通常都是指 sh ...

  2. shell脚本启动语法错误syntax error near unexpected token '{

    执行shell脚本时失败,报语法错误,但脚本内容检查正常 原因为该脚本是在非Linux系统下编辑之后放到系统执行的,文件模式类型非Linux系统匹配的模式类型. 查看文件的模式类型 显示文件的模式类型 ...

  3. Shell脚本部分语法

    Shell中的变量   Linux Shell中的变量分为“系统变量”和“用户自定义变量”,可以通过set命令查看那系统变量 系统变量:$HOME.$PWD.$SHELL.$USER等等 显示当前sh ...

  4. 《Linux命令行与shell脚本编程大全》 第五章理解shell

    5.1 1. cat /etc/passwd 可以查看每个用户自己的默认的shell程序. 2.默认的交互shell会在用户登录某个虚拟控制台终端时启动. 不过还有另外一个默认的shell是/bin/ ...

  5. 【Shell脚本学习4】几种常见的Shell

    上面提到过,Shell是一种脚本语言,那么,就必须有解释器来执行这些脚本. Unix/Linux上常见的Shell脚本解释器有bash.sh.csh.ksh等,习惯上把它们称作一种Shell.我们常说 ...

  6. 《Linux命令行与shell脚本编程大全》- 读书笔记3 - 理解shell

    当用户登录终端的时候,通常会启动一个默认的交互式shell.系统究竟启动哪个shell,这取决于用户配置.一般这个shell都是/bin/shell.默认的系统shell(/bin/sh)用于系统sh ...

  7. 《Linux命令行与shell脚本编程大全 第3版》高级Shell脚本编程---47

    以下为阅读<Linux命令行与shell脚本编程大全 第3版>的读书笔记,为了方便记录,特地与书的内容保持同步,特意做成一节一次随笔,特记录如下:

  8. 运维shell脚本函数语法

    在fun.sh 文件里,使用函数来封装脚本内容 usege() { echo "hello world" echo "脚本怎么使用函数......"}usege ...

  9. (十五)、shell脚本之简单控制流结构

    一.基本的控制结构 1.控制流 常见的控制流就是if.then.else语句提供测试条件,测试条件可以基于各种条件.例如创建文件是否成功.是否有读写权限等,凡是执行的操作有失败的可能就可以用控制流,注 ...

  10. shell脚本常用语法详解

    逻辑控制 if 语法:注意空格 a=1b=2if [ $a == $b ]then    echo "a==b"elif [ $a -gt $b ]then    echo &qu ...

随机推荐

  1. Java刷题常用的数据结构总结

    目录 1. 基础运算 2. 字符串类 3. 数组类与链表 4. 栈和队列 5. 字典类 6. 树 1. 基础运算 //int型相关操作 Integer.INT_MAX;//int型最大值 Intege ...

  2. python批量修改一个文件夹下含多个文件夹中的所有图片名称

    网上能找到的,大多是只对一个文件夹下所有图片进行重命名的代码. 这边实现的是,一个文件夹下有多个文件夹内图片的重命名. rename.py #!/usr/bin/python # -*- coding ...

  3. CentOS 搭建 samba 服务器并通过 Windows 访问

    第一步 下载安装 samba.samba-client sudo yum -y install samba samba-client 终端提示安装完成 第二步 创建共享文件夹,这个文件夹到时候可以通过 ...

  4. MySQ安装装

    1.Linux安装 检查系统有没有之前安装过: rpm -qa | grep mysql 如果安装过卸载 rpm -e mysql // 普通删除模式 rpm -e --nodeps mysql // ...

  5. JavaScript之void

    void是什么 void是JavaScript重要的关键字,该操作符指定要计算一个表达式但不返回. 语法格式: void func() javascript:void func() 或 void (f ...

  6. P5318 【深基18.例3】查找文献题解(链式前向星)

    P5318 [深基18.例3]查找文献题解 用head记录这一起点的最后一条边, next记录这一起点的上一条边. 注意要按照参考文献的倒叙排序(要按顺序看,而链式前向星是逆着来的,也就是为什么最简单 ...

  7. winfrom快捷键

    1.当活动窗体的快捷键 1 protected override bool ProcessCmdKey(ref Message msg, Keys keyData) 2 { 3 KeyEventArg ...

  8. go环境 依赖管理 基本命令

    Go安装 Go官网下载地址:https://golang.org/dl/ Go官方镜像站(推荐):https://golang.google.cn/dl/ Windows 选择Windows版本下载安 ...

  9. 深度学习PyTorch入门(1):3060 Pytorch+pycharm环境搭建

    WIN10, NVIDIA GeForce RTX 3060 python 3.7, CUDAv11.1.1, PyTorch 1.9, PyCharm 1.安装anacodah和PyCharm:   ...

  10. Gitlab Ubuntu部署

    一.安装存储库 sudo curl -s https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh ...