今天把一个 shell script 从 Linux 移植到 Solaris 时遇到一些小问题:

args=`tail -n 1 $file | head -1`

tail 的用法有点不一样。Solaris 下的 tail:tail -1 $file

IFS=”

javac $1

sort_program=`echo $1|sed ‘s/\.[^.]*$//’`

args=”2 1 3″

java $sort_program $args

上面的 script 编译一个 java 排序程序,然后用给定参数 2 1 3 运行,排序后输出 1 2 3。java 运行上面脚本时报错:

Exception in thread “main” java.lang.NumberFormatException: For input string: “2 1 3”

显然 java 把 “2 1 3” 字符串当作了参数,应该是 2 1 3,怎么会这样呢?echo $args 显示 args 的值的确是 2 1 3。调试了半天发现这个 shell script 开头有个 IFS,不知道什么时候加上去的,上面的那句 IFS 导致以新行切分文件时将 “2 1 3” 作为整体发给 java,而不是单独将 2 1 3 作为参数传给 java,所以去掉 IFS 语句就可以了。IFS 是个很有用的变量,默认下用来分割空格、制表、换行等,也可以用来分割指定字符,比如把 www:vpsee:com:8080 分割成 www vpsee com 8080 就可以用 IFS:

bash-3.00$ $line=www:vpsee:com:8080

bash-3.00$ $IFS=':'

bash-3.00$ $for i in $line; do echo $i; done

www

vpsee

com

8080

上面 java 例子中的 `echo $1|sed ‘s/\.[^.]*$//’` 用来过滤掉后缀名,比如:编译 javac HelloWorld.java 需要 .java 后缀名,但是运行 java HelloWorld 就不需要带上 .class 后缀名。 下面的 shell script 得到一个文件名后打印出其不包含后缀名的文件名:

student=$1

student_title=`echo $1|sed 's/\.[^.]*$//'`

echo $student_title

linux shell ifs,Shell 的 IFS 变量相关推荐

  1. linux shell IFS分隔符 简介 IFS=$‘\n‘ 使用换行符做分隔符

    IFS是internal field separator的缩写,shell的特殊环境变量.ksh根据IFS存储的值,可以是空格.tab.换行符或者其他自定义符号,来解析输入和输出的变量值. 用IFS定 ...

  2. linux shell ifs,shell - IFS分隔符

    IFS是internal field separator的缩写,shell的特殊环境变量.ksh根据IFS存储的值,可以是空格.tab.换行符或者其他自定义符号,来解析输入和输出的变量值. 用IFS定 ...

  3. Linux内部字段分离符环境变量IFS

    Linux内部字段分离符环境变量IFS:用于bash shell,默认bash shell 会将空格.制表符/t.换行符/n 当成字段分隔符 arr=(/pubsentiment?action=che ...

  4. [Linux]Shell的运算符和特殊变量

    说起Shell脚本,免不了用变量.特别是对于这种一堆符号表示变量的语言来说,你不了解一下相关变量的本意,根本无从下手.譬如写个循环遍历,$#就起了好大作用.所以还是有必要记录一下,也是对学习的一个笔记 ...

  5. Linux下的Shell编程(2)环境变量和局部变量

    Shell Script是一种弱类型语言,使用变量的时候无需首先声明其类型. 局部变量在本地数据区分配内存进行存储,这个变量归当前的Shell所有,任何子进 程都不能访问本地变量.这些变量与环境变量不 ...

  6. Linux基础之shell变量

    Linux基础之shell变量 一.shell变量及其他相关介绍 二.shell变量类型 三.shell变量用法 四.定义命令别名 五.系统变量文件定义说明 一.shell变量及其他相关介绍 1.编译 ...

  7. linux中对shell变量内容的修改和替换

    鸟哥私房菜中,对这一内容的描述,简直让人看不懂,好不容易找来文章可以帮助理解下. linux中对shell变量内容的修改和替换 1.变量内容修改 file=/dir1/dir2/dir3/my.fil ...

  8. linux下划线后面加变量名,Shell中下划线_与变量的关系

    一个shell脚本根据日期和时间自动备份数据数据库的时候遇到一个问题$ vi /u01/app/bak/bin/public_serbak.sh #!/bin/sh export ORACLE_SID ...

  9. linux中安shell怎么传入参数,【linux】linux 下 shell命令 执行结果赋值给变量【两种方式】...

    方法1:[通用方法] 使用Tab键上面的反引号 例子如下: find命令 模糊查询在/apps/swapping目录下 查找 文件名中包含swapping并且以.jar结尾的文件 使用反引号 引住命令 ...

  10. 学习linux杂七杂八——关于shell中的变量

    var=value 变量定义并赋值,注意等号前后不能与空格相邻,如果需要有空格(其他特> 殊字符,如$,回车,",',\等)可用转义字符\进行转义. 变量命名规则同C语言. 变量值两端 ...

最新文章

  1. 畅通工程 HDU - 1233 
  2. python进阶:闭包、map/reduce/filter函数、lambda函数、装饰器
  3. Netty实现原理浅析
  4. 第二章 数据的表示和运算 2.1.2 BCD码 [计算机组成原理笔记]
  5. python刚开始什么都不能_关于python的初步学习
  6. postman与Jmeter调用接口
  7. 请各位博友帮帮出出主意呀
  8. Openlayer:学习笔记之控件
  9. java 下载excel到本地_java已知下载链接将Excel文件利用httpclient下载到本地
  10. UCGUI窗体管理及消息处理机制分析
  11. 很简单只需五步,实现图片换背景!
  12. 计算机软件lumion的使用例子,Lumion怎么用?BIM软件教学:带你掌握Lumion实战应用...
  13. Chrome 启动参数
  14. 手动更新windows补丁
  15. 如何下载google play上的软件
  16. hangfire支持mysql_快速入门 - Hangfire.HttpJob 中文文档
  17. 摩伴windows桌面服务器,魔伴windows桌面
  18. 团队作业10——事后诸葛亮分析
  19. 五个温度带的分界线_中国划分为哪五个个温度带
  20. android .9图片详解及应用

热门文章

  1. 深入理解深度学习——语境词嵌入(Contextual Word Embedding)
  2. Zend Studio 9.0.3正式版注册破解
  3. 消费品行业经销商渠道数据同步及管理
  4. 解决“fatal: 'origin' does not appear to be a git repository...”
  5. 视频剪辑学习笔记(1)
  6. Win10重装的方法?一键重装Win10的图文版教程
  7. Invalid argument during startup: Failed to open the .conf file: redis-window
  8. VirtualBox复制虚拟机(同电脑、跨电脑)
  9. hadoop之hdfs及其工作原理
  10. Websocket(二)-客户端与服务器通信