shell初级

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/answer100answer/article/details/81319103

1. 读取文件

参考:
在while read line里怎样保留行首的空格

作用域、双引号

两种写法的变量作用域不同

  • 方法1:

会自动消除行首空格,do中的变量外部不能拿到

while read line
do
    echo "$line" #不能保留行首空格
    str1=${str}"$line""\n" #拼接字符串,但是str1不能在while外得到    
done < testDate.txt
echo $str
  • 方法2:

外部可以拿到str变量,$line会保留原样输出

for line in `cat testDate`#反引号,表示命令
do
    str=${str}"$line""\n"
    echo "$line"
done

注意:是否加双引号很有讲究。
1. cat testDate这里就不能加双引号,加了以后整个文件就成了一个字符串了。
2. $line是需要加"""$line",表示原样输出。

反引号

表示执行命令,与$()

VAR=`java -jar "$JAR_PATH" "$str"`
或
VAR=$(java -jar "$JAR_PATH" "$str")

分隔符

参考
shell IFS区别及使用

分隔符作用在给个循环前边,如for

IFS_BAK=$IFS # 备份IFS
IFS=$'\n' #以\n分隔
...
IFS=$IFS_BAK
IFS='\n'  //将字符\和字符n作为IFS的换行符。
IFS=\n //与上面一样。
IFS=$'\n' //正真的使用换行符做为字段分隔符。

//如果IFS='\n':;"
//这个赋值会将反斜杠、n、冒号、分号和双引号作为字段分隔符。

猜你喜欢

转载自blog.csdn.net/answer100answer/article/details/81319103