linux学习 read 和while
来自jimmy老师教程
while基本结构
while condition
do
command
done
read的用法之一:读取键盘输入的数据(其实例子里也不是从键盘里读取,反正就是读取内容吧)
1 #!/bin/bash
2 #testing the read command
3
4 echo -n "Enter you name:" #echo -n 让用户直接在后面输入
5 read name #输入的多个文本将保存在一个变量中
6 echo "Hello $name, welcome to my program."
但是真正理解了read吗?为什么在read 之前都没有出现过一个name的变量,read怎么知道是读哪个变量?
其实自己还是没有真正理解语句的逻辑,只是照抄了别人的代码。
我自己重新写一次。
#!/bin/bash
#testing read command
echo "Enter you name:$name"
read name
echo "Hello $name, welcome to my program."
但是如果要实现这种效果,还是比较习惯这种语句:
#!/bin/bash
#testing read command
read -p "Enter you name:" name
echo "Hello $name, welcome to my program."
这下好理解了,有前有后了。到这里才是真正理解了read的作用。
理解了while和read的基本用法,才能理解jimmy老师的
xhsys@xh:/mnt/e/NGS/RSEMresults$ ls D[123]*.isoforms.results|while read id;do echo $id;done
D1_1.isoforms.results
D1_2.isoforms.results
D1_3.isoforms.results
D2_1.isoforms.results
D2_2.isoforms.results
D2_3.isoforms.results
D3_1.isoforms.results
D3_2.isoforms.results
D3_3.isoforms.results
这下明白了,其实就是将ls的内容传导至while中read后的id中,这个id是个变量,可以是其它的名字,比如KKK,或MMM,都可以,只要去echo后的$id
保持一致就可以了。
其实这里也是为了演示while用法才这样写,实际不必这么麻烦,直接ls也是一样的效果。
xhsys@xh:/mnt/e/NGS/RSEMresults$ cat tgh.txt |while read kkk;do echo $kkk;done
C1_1.isoforms.results
C1_2.isoforms.results
C1_3.isoforms.results
C2_1.isoforms.results
C2_2.isoforms.results
C2_3.isoforms.results
C3_1.isoforms.results
C3_2.isoforms.results
C3_3.isoforms.results
D1_1.isoforms.results
D1_2.isoforms.results
D1_3.isoforms.results
D2_1.isoforms.results
D2_2.isoforms.results
D2_3.isoforms.results
D3_1.isoforms.results
D3_2.isoforms.results
D3_3.isoforms.results
xhsys@xh:/mnt/e/NGS/RSEMresults$ cat tgh.txt
C1_1.isoforms.results
C1_2.isoforms.results
C1_3.isoforms.results
C2_1.isoforms.results
C2_2.isoforms.results
C2_3.isoforms.results
C3_1.isoforms.results
C3_2.isoforms.results
C3_3.isoforms.results
D1_1.isoforms.results
D1_2.isoforms.results
D1_3.isoforms.results
D2_1.isoforms.results
D2_2.isoforms.results
D2_3.isoforms.results
D3_1.isoforms.results
D3_2.isoforms.results
D3_3.isoforms.results
可以看到,两种方法效果都是一样的。


浙公网安备 33010602011771号