1. 文件开始添加: #!/bin/bash : 表明这个脚本需要使用bash shell来运行
2. $X : 这种格式来应用变量, 有当变量值包含空格时需要加上引号
3. 等号(=)两边不能有空格。 错误例子: X = hello
4. shell将每一行命令视为命令及其参数的集合,以空格分隔。foo=bar就被视为一条命令; foo = bar 的问题就在于shell将空格分开的foo视为命令.
5. 单引号 VS 双引号: 变量名会在双引号中展开,单引号中则不会。例如: echo '$USER=' #输出为 $USER; echo "$USER=" 输出为变量USER的值
6. 使用大括号保护变量:
#!/bin/bash
X=ABC
echo "$Xabc" 这个脚本没有任何输出, 因为shell以为我们想要打印变量Xabc的值,实际上却没有这个值。 X=ABC echo "${X}abc", 输出:ABCabc
7. 命令替换:
(1) 大括号扩展: $(commands) 会展开为命令commands的输出结果。并且允许嵌套使用,所以commands中允许包含子大括号扩展。
(2) 反撇好扩展:将commands扩展为命令commands的输出结果。不允许嵌套。
例子:
#!/bin/bash
files="$(ls)" #前面$后面跟的是变量名, 现在$( 后面跟的是命令.
web_files=`ls public_html`
echo "$files" # we need the quotes to preserve embedded newlines in $files
echo "$web_files" # we need the quotes to preserve newlines
X=`expr 3 * 2 + 4` # expr evaluate arithmatic expressions. man expr for details.
2. $X : 这种格式来应用变量, 有当变量值包含空格时需要加上引号
3. 等号(=)两边不能有空格。 错误例子: X = hello
4. shell将每一行命令视为命令及其参数的集合,以空格分隔。foo=bar就被视为一条命令; foo = bar 的问题就在于shell将空格分开的foo视为命令.
5. 单引号 VS 双引号: 变量名会在双引号中展开,单引号中则不会。例如: echo '$USER=' #输出为 $USER; echo "$USER=" 输出为变量USER的值
6. 使用大括号保护变量:
#!/bin/bash
X=ABC
echo "$Xabc" 这个脚本没有任何输出, 因为shell以为我们想要打印变量Xabc的值,实际上却没有这个值。 X=ABC echo "${X}abc", 输出:ABCabc
7. 命令替换:
(1) 大括号扩展: $(commands) 会展开为命令commands的输出结果。并且允许嵌套使用,所以commands中允许包含子大括号扩展。
(2) 反撇好扩展:将commands扩展为命令commands的输出结果。不允许嵌套。
例子:
#!/bin/bash
files="$(ls)" #前面$后面跟的是变量名, 现在$( 后面跟的是命令.
web_files=`ls public_html`
echo "$files" # we need the quotes to preserve embedded newlines in $files
echo "$web_files" # we need the quotes to preserve newlines
X=`expr 3 * 2 + 4` # expr evaluate arithmatic expressions. man expr for details.
echo "$X"
未完待续...