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}:变量名两侧额外的花括号通常用来帮助识别美元符号的变量名