
空字符串2是紧接着在5之后的吗?
还是中间有TAB分隔?
我下面是紧接着追加C字段空格。
假设文本为file.txt (开头没有 A B C),那么:
#!/bin/bash
rm -f result.txt
cat file.txt | while read line
do
n=`echo "$line"|awk '{print $2}'`
(
echo -n "$line"
i=0
while [ $i -le $n ]
do
echo -n " "
let i+=1
done
echo
) >>result.txt
done
运行结果在result.txt里。
学 Kali 渗透的时候 Shell 脚本差点把我搞疯了,不停报错。因刚刚接触 Linux 和 Shell,没有系统学过,所以很多报错都不知道怎么回事。
对着视频敲脚本,视频中空格有没有也不怎么看得出来,没想到是空格的问题。后来查才发现 Shell 对空格有特别严格的要求。
参考: shell脚本中空格的注意问题
1. =
赋值时:两边不能有空格
i=1
i=$((i+1))
比较时:两边必须有空格
if [ $a = $b ]
2. if
整数比较时:中括号前后必须有空格
if [ a -xx b ]
参考: Linux#Shell#if [ $# -ne 1 ]then 是什么意思?
看来双括号还有问题…再学吧…
1. 变量名、等号、值之间不能有空格
2. 变量的引用是用 $ 符号加上变量名
echo ${a}
变量名外面的花括号是可选的,加不加都行,加花括号是为了帮助解释器识别变量的边界,建议给所有变量加上花括号,这是个好习惯,既便于阅读,又不易出错。
在shell中,以空格作为命令参数的分隔符,所以touchab
cd,shell会把ab
cd解释成touch的两个参数,即要创建的两个文件的名称,所以就创建了两个文件。而
touch
"ab
cd"
,很明显,"ab
cd"是一字符串,是一整体,这样就创建了一个文件ab
cd.
还有一方法,就是把空格转义:
touch
ab\
cd
(反斜线后有一空格,此时反斜线把空格转义了),当然,还是第一种方法好用
:)
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)