http://blog.163.com/jk_new/blog/static/995485622010140363651/
Linux命令简单使用查询: 注意Shell中一些格式很重要,有些地方必须要加空格,否则无效!!!如if [ ],while [ ] 等
chmod --------修改文件的执行权限,
chmod u+x filename 只有自己可以执行,其它人不能执行 chmod 700 filename
chmod ug+x filename 只有自己以及同一群可以执行,其它人不能执行 chmod 770 filename
chmod +x filename 所有人都可以执行 chmod 777 filename
echo ---------输出变量名或者信息
echo name -----------输出结果,屏幕上显示name
name=TOM
echo $name ----------输出结果,屏幕上显示TOM ,name经过上面的赋值
如果赋值的是系统环境变量,那么要加上export 变量,例如export VE_BASE=/usr/local/arm/.. ,可以添加到脚本
/root/.bashrc中 ,使用source .bashrc命令更新系统环境变量。
一些特殊的系统变量
$0-------------当前执行执行程序的名字,本身,但是并不是唯一的,因为脚本里面也可以包含另外的执行脚本。
$n -------------当前执行程序的第n个参数,注意:以空格为分隔符。
(其实上面的很好理解,echo $0表示输出当前执行程序的名字,echo $1 当前执行程序后面的第一个参数,echo $2 .......)
$* -------------这个程式的所有参数
$# -------------这个程式的参数个数 ,这个只是个int类型的计数值,计算一共有多少个参数
$$ -------------这个程式的PID
$@-------------为所有参数列表,返回所有参数
$! -------------执行上一个背景指令的PID( ??? )
$? -------------执行上一个指令的返回值( ???)
http://lovingtree.blog.163.com/blog/static/144853420082204505348/
exec----------执行另外的应用程序或者脚本,这个和直接运行不同的是,该命令会进入另外的脚本运行,并且直接关闭结束当前的脚本。
例如:#!/bin/sh
echo name
exec ./filename
echo other testing
那么,很明显的,后面的other testing 就不会运行了。
pwd------ 显示当前路径
expr ------将数值加1
例如: number=`expr $number+1` ,表示将自己加1
test -----------流程控制,条件判断式。当后面的判断为真时,返回非0,判断不为真,那么返回0,一般都是配合if --then ---else ----fi来使用
例如:name=jk
if (test $name=jk)
then echo right $name
else echo not_right name
fi
结果输出:right jk
test 比较系列:主要是用于if 的判断,很简单,如果test满足条件为真,if后面才是非零值,那么才执行then程序,否则执行else或不执行。
特殊变量参数:
test $#!=0 --------------比较当前的脚本所有参数是否为0,也即没有参数,那么(test $#=0)就返回非零值,
数字比较:
$number=32
if( test $number -eq 32) ---------------表示数字相等为真,注意,-eq前后保持空格
expr
expr
expr
expr
expr
expr
字符串比较:
if ( test $string1 = $string2 ) --------------比较两个字符串是否相等,注意了,比较的两个字符串中间=号都要加上一个空格,否则比较无效,返回都是真。
同理: if(test $string1 != $string2 ) ------不等于才为真,注意‘=’号两边的空格一定要加上。
if(test $string1 = "abc") -----直接比较字符串
if(test -z $string )------查看字符串长度是否为0
文件存在比较:
if( test -d $filename) --------------查看filename是存在的一个文件子目录为真
if(test -e $filename) ----------------查看filename文件存在为真
if(test -f file) ----------------文件是普通文件为真
if(test -g file ) ----------------文件的set-group-id属性位被设置则为真
if(test -r file ) ----------------文件可读则为真
if(test -s file ) ----------------文件长度不为0则为真
if(test -u file ) ----------------文件的set-user-id属性位被设置则为真
if(test -w file ) ----------------文件可写则为真
if(test -x file ) ----------------文件可执行则为真
for in 语法命令:
for 变量 in 循环给予变量;do \
command(该命令中会包含了上面的变量)
done;
从上面可以看出:这句话的意思就是,for 后面跟了一个使用的变量, 该变量根据for循环,分别从in 后面的循环变量中获取变量,然后在do里面,将获取的变量一次执行某个命令,一直都循环给予变量结束;
举例:
for testvar in aa bb cc dd; do \
echo $testvar
done;
好,看到的结果就是:aa bb cc dd .
其中有个注意点:不要写成:for testvar
in aa bb cc dd; do \
也即不要将for 和In隔行,一定要保证在同一行中才行,否则出错;
while循环命令:
如同上面的for一样,while的格式如下:
while 条件表
do
命令表
done
条件表就是用到上面的test条件判断,和if一样,举例说明:
Sum=0
i=0
while true #true是系统的关键词 表示真
do
i=`expr $i + 1`
Sum=`expr $Sum + $i`
if [ $i = "100" ]
then
break;
fi
done --------这里到while结束
echo $i $Sum
其实while部分可以改为:
while [ $i != "100" ]
do
i=`expr $i + 1`
Sum=`expr $Sum + $i`
done
case 命令:
read 命令:
linux shell获取本机ip地址
(2009-02-12 09:57:11)
转载
var $tag='杂谈'; var $tag_code='b02ecd6f2bb60521b827eb9d873b00cd'; var $r_quote_bligid='4a4163880100cil2'; var $worldcup='0'; var $worldcupball='0'; 标签: 杂谈 | 分类:shell编程 |
获取本机ip地址地址,并保存到变量中
arg=`ifconfig eth0 |grep "inet addr"| cut -f 2 -d ":"|cut -f 1 -d " "`
ipaddr=$arg
echo $ipadd
来源:(http://blog.sina.com.cn/s/blog_4a4163880100cil2.html) - linux shell获取本机ip地址_nike_新浪博客
cut参数简介
-d用来定义分隔符,默认为tab键,
-f表示需要取得哪个字段,2表示取得以-d指定的分隔符分割的第二个字段
当然也可以通过cut取得文件中每行中特定的几个字符,例如:
cut -c3-5 /etc/passwd
就是输出/etc/passwd文件中每行的第三到第五个字符。
-c 和 -f 参数可以跟以下子参数:
N 第N个字符或字段
N- 从第一个字符或字段到文件结束
N-M 从第N个到第M个字符或字段
-M 从第一个到第M个字符或字段
补充:
文件状态测试
-b filename : 当filename 存在并且是块文件时返回真(返回0)
-c filename : 当filename 存在并且是字符文件时返回真
-d pathname : 当pathname 存在并且是一个目录时返回真
-e pathname : 当由pathname 指定的文件或目录存在时返回真
-f filename : 当filename 存在并且是正规文件时返回真
-g pathname : 当由pathname 指定的文件或目录存在并且设置了SGID 位时返回真
-h filename : 当filename 存在并且是符号链接文件时返回真 (或 -L filename)
-k pathname : 当由pathname 指定的文件或目录存在并且设置了"粘滞"位时返回真
-p filename : 当filename 存在并且是命名管道时返回真
-r pathname : 当由pathname 指定的文件或目录存在并且可读时返回真
-s filename : 当filename 存在并且文件大小大于0 时返回真
-S filename : 当filename 存在并且是socket 时返回真
-t fd : 当fd 是与终端设备相关联的文件描述符时返回真
-u pathname : 当由pathname 指定的文件或目录存在并且设置了SUID 位时返回真
-w pathname : 当由pathname 指定的文件或目录存在并且可写时返回真
-x pathname : 当由pathname 指定的文件或目录存在并且可执行时返回真
-O pathname : 当由pathname 存在并且被当前进程的有效用户id 的用户拥有时返回真(字母O 大写)
-G pathname : 当由pathname 存在并且属于当前进程的有效用户id 的用户的用户组时返回真
file1 -nt file2 : file1 比file2 新时返回真
file1 -ot file2 : file1 比file2 旧时返回真
举例: if [ -b /dev/hda ] ;then echo "yes" ;else echo "no";fi // 将打印 yes
test -c /dev/hda ; echo $? // 将打印 1 表示test 命令的返回值为1,/dev/hda 不是字符设备
[ -w /etc/passwd ]; echo $? // 查看对当前用户而言,passwd 文件是否可写
测试时逻辑操作符
-a 逻辑与,操作符两边均为真,结果为真,否则为假。
-o 逻辑或,操作符两边一边为真,结果为真,否则为假。
! 逻辑否,条件为假,结果为真。
举例: [ -w result.txt -a -w score.txt ] ;echo $? // 测试两个文件是否均可写
常见字符串测试
-z string : 字符串string 为空串(长度为0)时返回真
-n string : 字符串string 为非空串时返回真
str1 = str2 : 字符串str1 和字符串str2 相等时返回真
str1 != str2 : 字符串str1 和字符串str2 不相等时返回真
str1 < str2 : 按字典顺序排序,字符串str1 在字符串str2 之前
str1 > str2 : 按字典顺序排序,字符串str1 在字符串str2 之后
举例: name="zqf"; [ $name = "zqf" ];echo $? // 打印 0 表示变量name 的值和字符串"zqf"相等
常见数值测试
int1 -eq int2 : 如果int1 等于int2,则返回真
int1 -ne int2 : 如果int1 不等于int2,则返回真
int1 -lt int2 : 如果int1 小于int2,则返回真
int1 -le int2 : 如果int1 小于等于int2,则返回真
int1 -gt int2 : 如果int1 大于int2,则返回真
int1 -ge int2 : 如果int1 大于等于int2,则返回真
举例: x=1 ; [ $x -eq 1 ] ; echo $? // 将打印 0 表示变量x 的值等于数字1
x=a ; [ $x -eq "1" ] // shell 打印错误信息 [: a: integer expression expected