目录

1.输入参数处理

1.1 $1~$9 加shift

1.2getopt

2.读写文件

2.1 读写文本文件

2.1.1读文本

2.1.2 写文本

2.2读写和显示二进制

2.2.1 写二进制

2.2.2 显示二进制


2.2.3 读二进制

3.字符串的分割 合并


1.输入参数处理

在shell中可以用$1~$9来get 参数超过9个参数需要用shift,也可以用read命令get参数,也可以用getopt解析参数。

如果要实现如下参数解析:

test.sh -i a.txt -o b.txt下面分情况说明

1.1 $1~$9 加shift

不用shift需要对 $1 $2分别判断,使用shift就只用$1

#!/bin/bash
echo $#
until [ $# -eq 0 ]
do
    case "$1" in
        -i|-input) 
            inputFile=$2
            shift 2
            ;;
        -o|-output) 
            outFile=$2
            shift 2
            ;;
        *) 
            shift
            echo "unknow para"
            ;;
    esac
done

echo "infile=$inputFile; outFile= $outFile"

以上同时给出了until do--done及case语句的语法

注意:1、*) 相当于其他语言中的default。

            2、各个分支中;;是必须的,;;相当于其他语言中的break

            3、 | 分割多个模式,相当于or

1.2getopt

2.读写文件

2.1 读写文本文件

2.1.1读文本

#!/bin/bash
while read line
do
    echo $line
done < filename#(待读取的文件)

或者使用cat命令。

for line in `cat filename`#(待读取的文件)
do
    echo $line
done

2.1.2 写文本

echo xxxxxx > test.log # >覆盖写 >>增加写
echo xxxxxx | tee test.log #覆盖写
echo xxxxxx | tee -a test.log #增加写

2.2读写和显示二进制

2.2.1 写二进制

echo 2a3f4d5c | xxd -r -ps > a.bin # 6 个字节

2.2.2 显示二进制

xxd a.bin
hd  a.bin
od -x a.bin
hexdump -x a.bin
hexdump -e '1/1 "%02x "' a.bin
hexdump -e '1/2 "%02x "' a.bin
hexdump -e '1/1 "%02x\n"' a.bin

分别的显示效果如下:

alihbase shell 查询的中文二进制 shell读取二进制文件_linux

alihbase shell 查询的中文二进制 shell读取二进制文件_shell_02

alihbase shell 查询的中文二进制 shell读取二进制文件_.net_03

 

alihbase shell 查询的中文二进制 shell读取二进制文件_shell_04

alihbase shell 查询的中文二进制 shell读取二进制文件_linux_05

alihbase shell 查询的中文二进制 shell读取二进制文件_html_06

alihbase shell 查询的中文二进制 shell读取二进制文件_linux_07

 由上图看出显示结果各不相同,可根据需要来采用不同的方式。

需要注意的是以下命令会将连续相同的数字用*表示

echo 2a2a2a2a | xxd -r -ps > a.bin # 6 个字节
hexdump -e '1/1 "%02x "' a.bin

 显示结果如下:

以上不同的格式 可以重定向到a.txt文件中形成对应的txt文件,在以TXT的文件方式去除最左边几列的地址(有的没有地址)和最右边乱码(有的没有乱码)顺序交换(2byte显示时高byte与低byte反了)

2.2.3 读二进制

需要使用dd 命令

还需要补充实例

3.字符串的分割 合并

可以完成

任意多个字符的合并

从任意位置截取任意长度字符

以指定分隔符分割字符串