java执行shell脚本本中怎么使某一列都增加一个数,这一列的数是不同的

Shell脚本中判断输入参数个数的方法
投稿:junjie
字体:[ ] 类型:转载 时间:
这篇文章主要介绍了Shell脚本中判断输入参数个数的方法,使用内置变量$#即可实现判断输入了多少个参数,需要的朋友可以参考下
$#代表了命令行的参数数量,可以看以下实例:
if [ $# != 1 ] ; then
echo "USAGE: $0 TABNAME"
echo " e.g.: $0 CDR_CALL_"
位置参数 $1, $2,..., $N,$#代表了命令行的参数数量, $0代表了脚本的名字
-ne&&& 不等于
-----------------------
shell 编程中使用到得if语句内判断参数
–b 当file存在并且是块文件时返回真
-c 当file存在并且是字符文件时返回真
-d 当pathname存在并且是一个目录时返回真
-e 当pathname指定的文件或目录存在时返回真
-f 当file存在并且是正规文件时返回真
-g 当由pathname指定的文件或目录存在并且设置了SGID位时返回为真
-h 当file存在并且是符号链接文件时返回真,该选项在一些老系统上无效
-k 当由pathname指定的文件或目录存在并且设置了“粘滞”位时返回真
-p 当file存在并且是命令管道时返回为真
-r 当由pathname指定的文件或目录存在并且可读时返回为真
-s 当file存在文件大小大于0时返回真
-u 当由pathname指定的文件或目录存在并且设置了SUID位时返回真
-w 当由pathname指定的文件或目录存在并且可执行时返回真。一个目录为了它的内容被访问必然是可执行的。
-o 当由pathname指定的文件或目录存在并且被子当前进程的有效用户ID所指定的用户拥有时返回真。
UNIX Shell 里面比较字符写法:
-eq&& 等于
-ne&&& 不等于
-gt&&& 大于
-lt&&& 小于
-le&&& 小于等于
-ge&& 大于等于
-z&&& 空串
=&&& 两个字符相等
!=&&& 两个字符不等
-n&&& 非空串
-------------------------------------------------------------------------
更为详细的说明:
运算符&&&&&&&&&&&&&&&&&&&& 描述&&&&&&&&&&&&&&&&&&&&&&&&& 示例
文件比较运算符
-e filename&&&& 如果 filename 存在,则为真&&&&&&&&&&& [ -e /var/log/syslog ]
-d filename&&&& 如果 filename 为目录,则为真&&&&&&&&& [ -d /tmp/mydir ]
-f filename&&&& 如果 filename 为常规文件,则为真&&&&& [ -f /usr/bin/grep ]
-L filename&&&& 如果 filename 为符号链接,则为真&&&&& [ -L /usr/bin/grep ]
-r filename&&&& 如果 filename 可读,则为真&&&&&&&&&&& [ -r /var/log/syslog ]
-w filename&&&& 如果 filename 可写,则为真&&&&&&&&&&& [ -w /var/mytmp.txt ]
-x filename&&&& 如果 filename 可执行,则为真&&&&&&&&& [ -L /usr/bin/grep ]
filename1 -nt filename2 如果 filename1 比 filename2 新,则为真 [ /tmp/install/etc/services -nt /etc/services ]
filename1 -ot filename2&& 如果 filename1 比 filename2 旧,则为真& [ /boot/bzImage -ot arch/i386/boot/bzImage ]
字符串比较运算符 (请注意引号的使用,这是防止空格扰乱代码的好方法)
-z string&&&&&&&&&&&&&& 如果 string 长度为零,则为真&&&&&&&&&&&&&& [ -z $myvar ]
-n string&&&&&&&&&&&&&&&&&&&&& 如果 string 长度非零,则为真&&&&&&& [ -n $myvar ]
string1 = string2&&&&&&&& 如果 string1 与 string2 相同,则为真&&&& [ $myvar = one two three ]
string1 != string2&&&&&&& 如果 string1 与 string2 不同,则为真&&&& [ $myvar != one two three ]
算术比较运算符
num1 -eq num2&&&&&&&&&&&&& 等于&&&&&&&& [ 3 -eq $mynum ]
num1 -ne num2&&&&&&&&&&&&& 不等于&&&&&& [ 3 -ne $mynum ]
num1 -lt num2&&&&&&&&&&&&&& 小于&&&&&&& [ 3 -lt $mynum ]
num1 -le num2&&&&&&&&&&& 小于或等于&&&& [ 3 -le $mynum ]
num1 -gt num2&&&&&&&&&&&& 大于&&&&&&&&& [ 3 -gt $mynum ]
num1 -ge num2&&&&&&&&&&&& 大于或等于&&& [ 3 -ge $mynum ]
脚本示例:
#!/bin/bash
# This script prints a message about your weight if you give it your
# weight in kilos and hight in centimeters.
if [ ! $# == 2 ]; then
echo "Usage: $0 weight_in_kilos length_in_centimeters"
weight="$1"
height="$2"
idealweight=$[$height - 110]
if [ $weight -le $idealweight ] ; then
echo "You should eat a bit more fat."
echo "You should eat a bit more fruit."
# weight.sh 70 150
You should eat a bit more fruit.
# weight.sh 70 150 33
Usage: ./weight.sh weight_in_kilos length_in_centimeters
位置参数 $1, $2,..., $N,$#代表了命令行的参数数量, $0代表了脚本的名字,
第一个参数代表$1,第二个参数代表$2,以此类推,参数数量的总数存在$#中,上面的例子显示了怎么改变脚本,如果参数少于或者多余2个来打印出一条消息。
执行,并查看情况。
# bash -x tijian.sh 60 170
+ weight=60
+ height=170
+ idealweight=60
+ '[' 60 -le 60 ']'
+ echo 'You should eat a bit more fat.'
You should eat a bit more fat.
其中-x用来检查脚本的执行情况。
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具新手园地& & & 硬件问题Linux系统管理Linux网络问题Linux环境编程Linux桌面系统国产LinuxBSD& & & BSD文档中心AIX& & & 新手入门& & & AIX文档中心& & & 资源下载& & & Power高级应用& & & IBM存储AS400Solaris& & & Solaris文档中心HP-UX& & & HP文档中心SCO UNIX& & & SCO文档中心互操作专区IRIXTru64 UNIXMac OS X门户网站运维集群和高可用服务器应用监控和防护虚拟化技术架构设计行业应用和管理服务器及硬件技术& & & 服务器资源下载云计算& & & 云计算文档中心& & & 云计算业界& & & 云计算资源下载存储备份& & & 存储文档中心& & & 存储业界& & & 存储资源下载& & & Symantec技术交流区安全技术网络技术& & & 网络技术文档中心C/C++& & & GUI编程& & & Functional编程内核源码& & & 内核问题移动开发& & & 移动开发技术资料ShellPerlJava& & & Java文档中心PHP& & & php文档中心Python& & & Python文档中心RubyCPU与编译器嵌入式开发驱动开发Web开发VoIP开发技术MySQL& & & MySQL文档中心SybaseOraclePostgreSQLDB2Informix数据仓库与数据挖掘NoSQL技术IT业界新闻与评论IT职业生涯& & & 猎头招聘IT图书与评论& & & CU技术图书大系& & & Linux书友会二手交易下载共享Linux文档专区IT培训与认证& & & 培训交流& & & 认证培训清茶斋投资理财运动地带快乐数码摄影& & & 摄影器材& & & 摄影比赛专区IT爱车族旅游天下站务交流版主会议室博客SNS站务交流区CU活动专区& & & Power活动专区& & & 拍卖交流区频道交流区
富足长乐, 积分 5370, 距离下一级还需 2630 积分
论坛徽章:0
kruglescript.sh -t 2009.krulge-39.1 -v 2009.krugle_39.1 运行这个脚本kruglescript.sh 的话位置参数算几个? 是四个吗?
[ 本帖最后由 greendays 于
09:34 编辑 ]
&&nbsp|&&nbsp&&nbsp|&&nbsp&&nbsp|&&nbsp&&nbsp|&&nbsp
富足长乐, 积分 5370, 距离下一级还需 2630 积分
论坛徽章:0
回复 #1 greendays 的帖子
搞定!&&一共是四个。 这个是shell脚本,位置参数默认是按照空格划分的。脚本里的位置参数定义也是按照默认的。就是四个了。
大富大贵, 积分 14698, 距离下一级还需 5302 积分
论坛徽章:5
回复 #1 greendays 的帖子
富足长乐, 积分 5370, 距离下一级还需 2630 积分
论坛徽章:0
回复 #3 blackold 的帖子
哇哈哈! 大哥来了~~
大富大贵, 积分 14698, 距离下一级还需 5302 积分
论坛徽章:5
回复 #4 greendays 的帖子
家境小康, 积分 1806, 距离下一级还需 194 积分
论坛徽章:0
回复 #1 greendays 的帖子
在脚本里面 echo $#不就可以了吗?新手园地& & & 硬件问题Linux系统管理Linux网络问题Linux环境编程Linux桌面系统国产LinuxBSD& & & BSD文档中心AIX& & & 新手入门& & & AIX文档中心& & & 资源下载& & & Power高级应用& & & IBM存储AS400Solaris& & & Solaris文档中心HP-UX& & & HP文档中心SCO UNIX& & & SCO文档中心互操作专区IRIXTru64 UNIXMac OS X门户网站运维集群和高可用服务器应用监控和防护虚拟化技术架构设计行业应用和管理服务器及硬件技术& & & 服务器资源下载云计算& & & 云计算文档中心& & & 云计算业界& & & 云计算资源下载存储备份& & & 存储文档中心& & & 存储业界& & & 存储资源下载& & & Symantec技术交流区安全技术网络技术& & & 网络技术文档中心C/C++& & & GUI编程& & & Functional编程内核源码& & & 内核问题移动开发& & & 移动开发技术资料ShellPerlJava& & & Java文档中心PHP& & & php文档中心Python& & & Python文档中心RubyCPU与编译器嵌入式开发驱动开发Web开发VoIP开发技术MySQL& & & MySQL文档中心SybaseOraclePostgreSQLDB2Informix数据仓库与数据挖掘NoSQL技术IT业界新闻与评论IT职业生涯& & & 猎头招聘IT图书与评论& & & CU技术图书大系& & & Linux书友会二手交易下载共享Linux文档专区IT培训与认证& & & 培训交流& & & 认证培训清茶斋投资理财运动地带快乐数码摄影& & & 摄影器材& & & 摄影比赛专区IT爱车族旅游天下站务交流版主会议室博客SNS站务交流区CU活动专区& & & Power活动专区& & & 拍卖交流区频道交流区
丰衣足食, 积分 690, 距离下一级还需 310 积分
论坛徽章:1
例如我写了一个脚本,里面定义了cpu使用情况(CPUFree),内存使用情况(MEMFree),硬盘使用情况(DISKFree)
现在我想执行这个脚本,但是只想获得其中的cpu使用情况,如何做呢?
&&nbsp|&&nbsp&&nbsp|&&nbsp&&nbsp|&&nbsp&&nbsp|&&nbsp
家境小康, 积分 1614, 距离下一级还需 386 积分
论坛徽章:1
在脚本中echo这个cpu的使用情况,在另一个脚本中 可以这样 a=$(/path/your.sh)
富甲一方, 积分 49080, 距离下一级还需 920 积分
论坛徽章:31
davie5201314
如果你是定义的变量, 那么你的 另一个脚本中 使用 &source &your.sh&&, 之后就可以直接使用这个变量了.
论坛徽章:100
把你的脚本的完整输出贴出来看看
丰衣足食, 积分 690, 距离下一级还需 310 积分
论坛徽章:1
& & 是用的变量,
命令内容是用系统命令加awk提取的!
丰衣足食, 积分 690, 距离下一级还需 310 积分
论坛徽章:1
本帖最后由 davie5201314 于
12:03 编辑
& && &&&是用的变量,
命令内容是用系统命令加awk提取的!
我想知道怎样做,才能在调用这个脚本的时候,只读取脚本中的A或者B
富甲一方, 积分 41195, 距离下一级还需 8805 积分
论坛徽章:92
davie5201314
source your script
1. source ./info.sh
2. . ./info.sh
$ cat info.sh
DISKFree=3
$ cat show_info.sh
. ./info.sh
echo &CPU&&free: $CPUFree&
echo &MEM&&free: $MEMFree&
echo &DISK free: $DISKFree&
$ ./show_info.sh
CPU&&free: 1
MEM&&free: 2
DISK free: 3
论坛徽章:100
davie5201314 source ./test.sh
echo $A复制代码
丰衣足食, 积分 690, 距离下一级还需 310 积分
论坛徽章:1
& & 有没有办法像python中的函数那样直接用 ./test.sh A就调出A的值来?
论坛徽章:100
本帖最后由 Shell_HAT 于
14:47 编辑
davie5201314
& & 能,你需要修改 ./test.sh,在代码里面根据 $1 来决定输出什么内容。}

我要回帖

更多关于 shell脚本学习指南 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信