Yug*_*dle 2 bash shell loops while-loop
我有一个文件csv:
data1,data2,data2
data3,data4,data5
data6,data7,data8
Run Code Online (Sandbox Code Playgroud)
我想将其转换为(包含在变量中):
variable=data1,data2,data2%0D%0Adata3,data4,data5%0D%0Adata6,data7,data8
我的尝试:
data=''
cat csv | while read line
do
data="${data}%0D%0A${line}"
done
echo $data # Fails, since data remains empty (loop emulates a sub-shell and looses data)
Run Code Online (Sandbox Code Playgroud)
请帮忙..
Mar*_*c B 12
更简单的方法是从文件中删除换行符:
tr '\n' '' < yourfile.txt > concatfile.txt
Run Code Online (Sandbox Code Playgroud)
猛烈地
data=$(
while read line
do
echo -n "%0D%0A${line}"
done < csv)
Run Code Online (Sandbox Code Playgroud)
在非bash shell中,可以使用`...`代替$(...)。而且,echo -n不幸的是,抑制换行符的并不是完全可移植的,但这同样适用于bash。