shell编程Tips
#!
是一个约定的标记,它告诉系统这个脚本需要什么解释器来执行。echo
命令用于向窗口输出文本。
#!/bin/bash
echo "Hello World !"
执行shell脚本的方法:
先把编辑好的脚本保存为一个以.sh
结尾的文件,比如hello.sh
,然后切换到相应的目录,执行下边的语句赋予hello.sh执行权限。
chmod +x ./hello.sh #使脚本具有执行权限
然后就可以在命令行里输入下边的命令运行该脚本:
./hello.sh #执行脚本
Shell 支持以下三种定义变量的方式:
variable=value
variable='value'
variable="value"
需要注意的是,赋值号的周围不能有空格
使用一个定义过的变量,只要在变量名前面加美元符号$
即可,如:
name="Tom"
echo $name
echo ${name}
单引号和双引号的区别:
#!/bin/bash
url="variables"
variable1='变量1:${url}'
variable2="变量2:${url}"
echo $variable1
echo $variable2
运行结果:
变量1:${url}
变量2:variables
会发现,以单引号' '包围变量的值时,单引号里面是什么就输出什么,即使内容中有变量和命令(命令需要反引起来 反引号是``而不是这个 '')也会把它们原样输出。这种方式比较适合定义显示纯字符串的情况,即不希望解析变量、命令等的场景。
以双引号" "包围变量的值时,输出时会先解析里面的变量和命令,而不是把双引号中的变量名和命令原样输出。这种方式比较适合字符串中附带有变量和命令并且想将其解析后再输出的变量定义。
建议:如果变量的内容是数字,那么可以不加引号;如果真的需要原样输出就加单引号;其他没有特别要求的字符串等最好都加上双引号,定义变量时加双引号是最常见的使用场景。
Shell 也支持将命令的执行结果赋值给变量,常见的有以下两种方式:
variable=`command`
variable=$(command)
第一种方式把命令用反引号包围起来,反引号和单引号非常相似,容易产生混淆,所以不推荐使用这种方式;第二种方式把命令用$()包围起来,区分更加明显,所以推荐使用这种方式。
参考链接:http://c.biancheng.net/cpp/view/6999.html
20190416
更新:
学习链接:
https://fsl.fmrib.ox.ac.uk/fslcourse/lectures/scripting/
https://warwick.ac.uk/fac/sci/statistics/staff/academic-research/nichols/scripts/bash/Life_in_a_Shell-2017.pdf
pwd
:print working directory
cd
:change directory
ls
: list files
如何处理文件名中包含空格的情况?
- 使用反斜杠
\
比如:cd /to/My\ Programs/Desktop
,这里My与Programs之间有一个空格 - 用单引号或双引号把包含空格的字符串引起来,比如
cd '/to/My Programs/Desktop'