GNOME编辑器--gedit 构建基本脚本
gedit factorial.sh myprog.c
当你启动gedit外带多个文件时,它会将所有的文件都加载到不同的缓冲区并在主编辑器窗口中按标签化的窗口来显示每个文件。
shell脚本的关键在于输入多个命令并处理每个命令的结果,即使有可能将一个命令的结果传给另一个命令。shell允许你只用一步就将多个命令串连起来使用。
如:date;who
你可以将命令合成一个简单的文本文件,在需要运行这些命令时,可以简单运行这个文本文件。
创建shell脚本文件
在创建shell脚本文件时,必须在文件的第一行指定要使用的shell。格式:
#!/bin/bash
在通常的shell脚本的行里,井号(#)用作注释行。shell脚本中的注释行是不被shell执行的。然后,shell脚本文件的第一行是个特例,井号后接感叹号是告诉shell用哪个shell来运行脚本。
脚本中的内容,如有需要,可用分号来在一行输入你要用的两个命令。但在shell脚本中,你可以在不同行里列出命令。shell会根据命令在文件中出现的顺序来处理命令。
执行脚本,出现:bash:test:command not found问题
因为shell会通过PATH环境变量来查找命令。快速第查看PATH环境变量:
echo $PATH
PATH 环境变量被设成只在一组目录中查找命令。要让shell找到test脚本,可以:
(1)将shell脚本文件所处的目录添加到PATH环境变量中;
(2)在提示符中用绝对或者相对文件路径来引用shell脚本文件。
切记:要引用当前目录下的文件,你要在shell中使用单点操作符:./test
再次执行脚本时,如出现bash:./test:permission denied
查看文件属性,ls -l test
修改文件属性:chmod +777 test
显示消息
有时可以通过echo命令来添加自己的文本消息,来告诉本用户脚本正在做什么。
echo This is a test
this is a test
注意:默认情况下,你不需要使用引号将要显示的文本字符串圈起来。但字符串中出现引号的话可能就比较麻烦:
echo let‘s see if this’ll work
lets see if thisll work
echo命令可用单引号或双引号来将文本字符串圈起来。如果你在字符串中用到了它们,你需要在文本使用其中一种引号,而用另外一种来将字符串圈起来。
echo “This is a test to see if you're paying attention”
This is a test to see if you're paying attention
如果你想在同一行显示一个文本字符串作为命令输出。你可以用echo语句的-n参数。只要将第一个echo语句改成:
echo -n “The time and date are: ”
可以在环境变量名称之前加个美元符($)来在脚本中使用这些环境变量
echo “USER info for userid: $USER”
注意,echo命令中的环境变量会在脚本运行时替换成当前值。
$echo "The cost of the item is $15"
The cost of the item is 5
因为脚本会默认$1为一个变量。再显示5.
要显示美元符号,必须在他前面添加一个反斜线。
$echo "The cost of the item is \$15"
The cost of the item is $15
${var}:变量名两侧额外的花括号通常用来帮助识别美元符号的变量名
最新文章
- PHP通过ini_set()来设置显示错误信息和执行时间
- UEFI Bootable USB Flash Drive - Create in Windows(WIN7 WIN8)
- linux下的守护进程
- iOS开发之保存照片到系统相册(Photo Album)
- CSS中position属性 (absolute,relative,static,fixed)
- 脚本编程中的test、bash调试、变量计算、参数
- JAVA_3lesson
- HDOJ/HDU 1039 Easier Done Than Said?(字符串处理~)
- 生成MyEclipse6.5&;7.5&;8.0注册码的java源码
- eclipse导出附带源码的jar包
- mysql常见的优化方法
- Nginx防压力测试
- MVC简介与三层架构
- JPEG图片扩展信息读取与修改
- November 24th 2016 Week 48th Thursday
- Android开发之语音识别
- 数据结构:Bitset
- 【传感器】BMA253 数字,三轴加速度传感器
- 【转】OracleOraDb11g_home1TNSListener服务启动后又停止了
- ssh配置解释
热门文章
- Android 学习第16课,java 包、类等相关的一些基础知识
- 时间改成24小时制 和pc mobile链接自动转化
- AppStore遭遇大BUG
- js中top、clientTop、scrollTop、offsetTop的区别 文字详细说明版【转】
- WebView 载入本地的html
- 论SCRM系统对传统行业的冲击
- 传统开发模型vs敏捷开发模型——过程模型的变革
- cshtml常用标签
- 数组map()方法和filter()方法及字符串startsWith(anotherString)和endsWith(anotherString)方法
- code forces 382 D Taxes(数论--哥德巴赫猜想)