Linux Shell 脚本中字符串的连接方法

如果想要在变量后面添加一个字符,可以用一下方法:

$value1=home
$value2=${value1}"="
echo $value2

把要添加的字符串变量添加{},并且需要把$放到外面。

这样输出的结果是:home=,也就是说连接成功。

Linux Shell中expr的作用

        在shell命令中expr虽然不是很起眼,但是它的作用是非常大的!到目前为止,我个人看来最大的作用就是两个——四则运算和字符串的操作。

        先说四则运算,在Shell中四则运算不能简简单单的加减乘除,应该要写如下的格式:

$val1=`$val2 - 1`

 

        其中“=”后面用“`”包住表达式,这个符号在Shell中十分有用,是Tab键上面“~”的原来形式。可以用来将很多命令的结果保存到一个变量中去。接着就是运算符了,运算符的左右两边必须是空格,否则会出错。

        接着是强大的字符串操作:

        提取指定字符的下标:expr index 内容 字符,例如:$ind=`expr index “$content” “=”`

        提取字符串的子串:expr substr 内容 起始位置 终点位置,例如:$con=`expr substr “$content” “1” $ind`

Linux Shell脚本命令行参数的写法

$0 —- 当前程序的名称,实际上是一个内部参数,不同于$1,$2….因为它必须有!

$# —- 传递给程序的总的参数数目,也就是那个传说中的数组大小

$? —- 上一个代码或者shell程序在shell中退出的情况,如果正常退出则返回0,反之为非0值。

$* —- 传递给程序的所有参数组成的字符串。

$@ —- 以”参数1″ “参数2” … 形式保存所有参数

$$ —- 本程序的(进程ID号)PID

$! —- 上一个命令的PID 命令行指令

$ test.sh f1.c f2.c 脚本举例:

if [ $# -eq 0 ];then
echo "no arguments"
else
for args in $@
echo $args
fi

其中$#表示参数的个数,$@取到所有的参数值。

Linux Shell中删除文件中某一行的方法

如果有一个abc.txt文件,内容是:

aaa

bbb

ccc

ddd

eee

fff

如果要删除aaa,那么脚本可以这样写:

sed -i '/aaa/d' abc.txt

如果删除的是一个变量的值,假如变量是var,应该写成:

sed -i '/'"$var"'/d' abc.txt

至于grep -v aaa abc.txt这个方法,是无法将修改的结果写入abc.txt中去的

Tonitech版权所有 | 转载请注明出处: http://www.tonitech.com/?p=79

Linux Shell错误重定向的方法

        在进行Shell脚本编程时经常出现一些像Java的exception一样的错误,比如:cp *.c file或者ls *.c > file,如果在当前操作的路径下不存在.c的文件,Shell就会报错“No such file or directory”,那么,我们该如何去除这个提示呢?

       解决方法是:在语句后面加“2>/dev/null”,例如:cp *.c file 2>/dev/null或者ls *.c > file 2>/dev/null。

 

Tonitech版权所有 | 转载请注明出处: http://www.tonitech.com/?p=77