Command Files

可以将一串命令写入文件,然后再执行该文件就可以了。
为了执行文件,首先要确定文件是可执行的
可以使用ls -l file命令查看文件的权限

ls -l XMusicSetup.exe
# -rwxr-xr-x 1 Jason None 15474112 Oct 25  2015 XMusicSetup.exe

-没有相应权限,r可读,w可写(编辑),x可执行

如果文件不可执行,需要通过chmod +x file(s)命令添加执行权限

注释

任何跟在#字符后面的内容都会被忽略

变量

变量名

必须符合[A-Za-z_][a-zA-Z0-9_]*

赋值

variable=value

注意:

  • 赋值操作=两边不能有空格
  • shell 没有数据类型的概念,所有值都被当作字符来处理

输出

count=1
echo $count

$字符会转换其后跟的变量为其所代表的值。这种转变会发生在任何地方

sortCommand=sort
$sortCommand file   # 等效于 sort file

将一个变量的值赋给另一个变量

var1=3
var2=$var1

空值

如果一个变量没有被赋值或没有被定义则为空值,即没有任何字符

手动定义空值变量

nullVar=
nullVar=""
nullVar=''

文件名替换

考虑以下情况

var1=*
echo $var1  # 输出 pwd 下的文件名

注意,这里变量var1被赋予的值仅仅是字符*,此时并没有发生替换
在执行echo $var1命令时,首先发生变量替换将命令变为echo *
然后发生文件名替换*并替换为当前目录下的文件名

${variable}

假如变量filename中存储了一个文件名,现在你想将该文件重命令,在其原名后面添加一个X
如果直接执行

mv $filename $filenameX

则得不到想要的结果
因为$filenameX并识别为名为filenameX的变量。正确方式应该为

mv $filename ${filename}X

内置数值计算

$((expression))
i=1
$((i++))  # 这里的变量 i 无需 $ 前缀
echo $i   # 2