Shell脚本的一些参数
2016-05-14 16:19
387 查看
1.符号
-ne 表示 不等于
另外:
整数比较
-eq 等于,如:if ["$a" -eq "$b" ]
-ne 不等于,如:if ["$a" -ne "$b" ]
-gt 大于,如:if ["$a" -gt "$b" ]
-ge 大于等于,如:if ["$a" -ge "$b" ]
-lt 小于,如:if ["$a" -lt "$b" ]
-le 小于等于,如:if ["$a" -le "$b" ]
< 小于(需要双括号),如:(("$a" < "$b"))
<= 小于等于(需要双括号),如:(("$a" <= "$b"))
> 大于(需要双括号),如:(("$a" > "$b"))
>= 大于等于(需要双括号),如:(("$a" >= "$b"))
另外:$?是shell变量,表示"最后一次执行命令"的退出状态.0为成功,非0为失败.
2.常用系统变量:
$0 当前shell程序的名字
$1 ~ $9 命令行上的第一到第九个参数
$# 命令行上的参数个数
$* 命令行上的所有参数
$@ 分别用双引号引用命令行上的所有参数
$$ 当前进程的进程标识号(PID)
$? 上一条命令的退出状态
$! 最后一个后台进程的进程标识号
系统变量只能引用不能修改!
3.判断
if [ -f /bin/bash ]
then echo "/bin/bash is a file"
else echo "/bin/bash is NOT a file"
fi
如果两条命令写在同一行则需要用;号隔开,一行只写一条命令就不需要写;号了
4.循环
for
in
do
done
例子:
for var in con1 con2 con3...
do
程序段
done
就上面的语法结构来说,这个var的变数内容在循环工作的时候:
1 第一次循环时,var的内容是con1;
2 第二次循环时,var的内容是con2;
3 第三次循环时,var的内容是con3;
5.case语句
case分支语句的格式如下:
case $变量名 in
模式1)
命令序列1
;;
模式2)
命令序列2
;;
*)
默认执行的命令序列 ;;
esac
6,-z -n判空操作
Shell脚本中字符串判空:使用-z 字符串长度为0时,为真,-n字符串长度不为0,为真。这两个都不靠谱。
使用下面的方法最可靠:
if [ "x${value}" == "x" ] #为空
then
#为空处理
fi
if [ "x${value}" != "x" ] #不为空
then
#不为空处理
fi
注意 == 和 != 两边要有空格
7.echo 的一些命令
echo -n 不换行输出
$echo -n "123"
$echo "456"
最终输出
123456
而不是
123
456
echo -e 处理特殊字符
若字符串中出现以下字符,则特别加以处理,而不会将它当成一般文字输出:
\a 发出警告声;
\b 删除前一个字符;
\c 最后不加上换行符号;
\f 换行但光标仍旧停留在原来的位置;
\n 换行且光标移至行首;
\r 光标移至行首,但不换行;
\t 插入tab;
\v 与\f相同;
\\ 插入\字符;
\nnn 插入nnn(八进制)所代表的ASCII字符;
$echo -e "a\bdddd"
dddd
$echo -e "a\adddd" //输出同时会发出报警声音
adddd
-ne 表示 不等于
另外:
整数比较
-eq 等于,如:if ["$a" -eq "$b" ]
-ne 不等于,如:if ["$a" -ne "$b" ]
-gt 大于,如:if ["$a" -gt "$b" ]
-ge 大于等于,如:if ["$a" -ge "$b" ]
-lt 小于,如:if ["$a" -lt "$b" ]
-le 小于等于,如:if ["$a" -le "$b" ]
< 小于(需要双括号),如:(("$a" < "$b"))
<= 小于等于(需要双括号),如:(("$a" <= "$b"))
> 大于(需要双括号),如:(("$a" > "$b"))
>= 大于等于(需要双括号),如:(("$a" >= "$b"))
另外:$?是shell变量,表示"最后一次执行命令"的退出状态.0为成功,非0为失败.
2.常用系统变量:
$0 当前shell程序的名字
$1 ~ $9 命令行上的第一到第九个参数
$# 命令行上的参数个数
$* 命令行上的所有参数
$@ 分别用双引号引用命令行上的所有参数
$$ 当前进程的进程标识号(PID)
$? 上一条命令的退出状态
$! 最后一个后台进程的进程标识号
系统变量只能引用不能修改!
3.判断
if [ -f /bin/bash ]
then echo "/bin/bash is a file"
else echo "/bin/bash is NOT a file"
fi
如果两条命令写在同一行则需要用;号隔开,一行只写一条命令就不需要写;号了
4.循环
for
in
do
done
例子:
for var in con1 con2 con3...
do
程序段
done
就上面的语法结构来说,这个var的变数内容在循环工作的时候:
1 第一次循环时,var的内容是con1;
2 第二次循环时,var的内容是con2;
3 第三次循环时,var的内容是con3;
5.case语句
case分支语句的格式如下:
case $变量名 in
模式1)
命令序列1
;;
模式2)
命令序列2
;;
*)
默认执行的命令序列 ;;
esac
6,-z -n判空操作
Shell脚本中字符串判空:使用-z 字符串长度为0时,为真,-n字符串长度不为0,为真。这两个都不靠谱。
使用下面的方法最可靠:
if [ "x${value}" == "x" ] #为空
then
#为空处理
fi
if [ "x${value}" != "x" ] #不为空
then
#不为空处理
fi
注意 == 和 != 两边要有空格
7.echo 的一些命令
echo -n 不换行输出
$echo -n "123"
$echo "456"
最终输出
123456
而不是
123
456
echo -e 处理特殊字符
若字符串中出现以下字符,则特别加以处理,而不会将它当成一般文字输出:
\a 发出警告声;
\b 删除前一个字符;
\c 最后不加上换行符号;
\f 换行但光标仍旧停留在原来的位置;
\n 换行且光标移至行首;
\r 光标移至行首,但不换行;
\t 插入tab;
\v 与\f相同;
\\ 插入\字符;
\nnn 插入nnn(八进制)所代表的ASCII字符;
$echo -e "a\bdddd"
dddd
$echo -e "a\adddd" //输出同时会发出报警声音
adddd
相关文章推荐
- Bash通配符及特殊符号
- shell脚本分为三类:登录脚本、交互式脚本、非交互式脚本
- linux shell编程学习--日志工具
- linux shell编程学习--test测试比较命令
- Spark入门实战系列--3.Spark编程模型(上)--编程模型及SparkShell实战
- shell(二)Bash常用快捷键
- Shell命令行快捷键
- shell实现输入密码显示星号
- shell script 交互式脚本,可以读取命令行参数、选项,用户输入数据
- 第二节windows系统下Xshell 5软件远程访问虚拟机 Linux系统
- shell原理和问答机制引入
- linux shell脚本监控端口
- clone repository in git shell under windows
- Shell脚本学习指南(二)——变量、条件、循环
- hbase基本概念和hbase shell常用命令用法
- linux shell 特殊变量
- shell脚本+x
- ~/.bashrc 和 ~/.bash_profile 和 /etc/bashrc 和 /etc/profile 脚本的区别和启动加载顺序
- Windows日志管理相关脚本
- Delete log files longer than 45 days