shell脚本,shell语法和结构(以Cshell/TC shell为例)
2024-10-21 09:29:57
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
最新文章
- IDEA快捷键+使用小技巧
- qt-creator astyle Peizhi
- Win7 64位 VS2015环境编译NanoVG
- HoverTree开发日志之验证码
- Monkey测试1——Monkey的使用
- [原]我在Windows环境下的首个Libevent测试实例
- 初识 Asp.Net内置对象之Session对象
- xcode6 升级到xcode7 产生的问题
- 双向DFS模板题
- 学习HTML5, Canvas及简单动画的使用
- 解决ImportError: cannot import name &#39;webdriver&#39; from &#39;selenium&#39; (C:\Users\Mr.Su\PycharmProjects\***\venv\selenium.py)
- Python open 读和写
- eig()函数求特征值、特征向量、归一化
- Reveal使用
- Django 模版过滤器
- 微信小程序看上去很美
- Linux批量杀死进程
- nginx的MainLine version、Stable version、Legacy versions
- Linux配置自动发送邮件
- UVa 1606 Amphiphilic Carbon Molecules (扫描法+极角排序)