目录
1. 可以将变量或echo数据直接()赋给数组
下面分别将字符"1 2 3"和输入参数$1赋给了数组
设该脚本name为test_input2array.sh
运行命令为
./test_input2array.sh "sd erg wef" sdgf
#!/bin/bash
tmp="1 2 3"
echo $1
echo $2
tmp_array=($tmp)
tmp1_array=($1)
tmp2_array=(`echo $1`)
#不是tmp2_array=((echo $1))
#也不是tmp2_array=$(echo $1)
#可以分别测试上面这几种情况的结果
echo tmp_array[0]=${tmp_array[0]}
echo tmp_array[1]=${tmp_array[1]}
echo tmp_array[2]=${tmp_array[2]}
echo tmp1_array[0]=${tmp1_array[0]}
echo tmp1_array[1]=${tmp1_array[1]}
echo tmp1_array[2]=${tmp1_array[2]}
echo tmp2_array[0]=${tmp2_array[0]}
echo tmp2_array[1]=${tmp2_array[1]}
echo tmp2_array[2]=${tmp2_array[2]}
则最终打印结果为:
sd erg wef
sdgf
tmp_array[0]=1
tmp_array[1]=2
tmp_array[2]=3
tmp1_array[0]=sd
tmp1_array[1]=erg
tmp1_array[2]=wef
tmp2_array[0]=sd
tmp2_array[1]=erg
tmp2_array[2]=wef
2. read命令
read 命令从标准输入读取,并把输入的内容复制给变量。
命令格式: read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p prompt] [-t timeout] [-u fd] [name …]
-e | 在一个交互 shell 中使用 readline 获取行 |
-r | 不允许反斜杠转义任何字符 |
-s | 隐藏输入 |
-a array | 保存为数组,元素以空格分隔 |
-d delimiter | 持续读取直到遇到 delimiter 第一个字符退出 |
-n nchars | 读取 nchars 个字符返回,而不是等到换行符 |
-p prompt | 提示信息 |
-t timeout | 等待超时时间,秒 |
-u fd | 指定文件描述符号码作为输入,默认是 0 |
name | 变量名 |
#!/bin/bash
read -p "Please input parameter: " Para
echo Para=${Para}
read -p "Please input parameter: " -a Para
echo Para[0]=${Para[0]}
echo Para[1]=${Para[1]}
echo Para[2]=${Para[2]}
运行结果如下图,看出read是需要从键盘即时输入参数的
./test_input2array_1.sh
Please input parameter: 11 22 33
Para=11 22 33
Please input parameter: 11 22 33
Para[0]=11
Para[1]=22
Para[2]=33