我的 bash 脚本遇到了一些问题。
下面是我的 bash 代码:
#!/bin/bash
cd /root/Msgs/TESTNEW/new
file=myfile.txt
var1=$(awk '(NR==30){print $2}' $file)
var2=$(awk 'NR>=38 && NR<=39' $file)
var3=${var2// /+}
curl "http://<server_ip>/power_sms/send_sms.php?username=<user>&password=<pass>phoneno=$var1&text=$var3"
Run Code Online (Sandbox Code Playgroud)
该脚本用于读取特定文件(例如:myfile.txt)中的一系列行。然后它将文件的内容放入某个变量(var1,var2)中。之后,该变量将被调用到 curl 函数中。
当文件的内容在每个新行中都有间距时,问题就开始了。这使得 curl 无法正常工作,因为它不接受空格字符。我设法将间距替换为加号符号。但是每当有新行时,它将有间距而不是加号。
部分输出如下:
hi+there.hopefully+you+can+get+this+email+which+are being+send+as+sms.
Run Code Online (Sandbox Code Playgroud)
有人可以帮助我吗?谢谢。
Sir*_*rch 18
如果您使用的是 linux,那么这会将换行符替换为 +
awk '{printf "%s+",$0} END {print ""}'
或与 sed
sed ':a;N;$!ba;s/\n/+/g'
编辑:对于awk的解决方案,您正在寻找这个:
awk 'BEGIN {RS=""}{gsub(/\n/,"",$0); print $0}' myfile.txt
Run Code Online (Sandbox Code Playgroud)
从文件中删除所有换行符的另一种方法:
tr -d "\n"
Run Code Online (Sandbox Code Playgroud)
一个例子:
tr -d "\n" < myfile.txt > myfilewithoutnewlines.txt
Run Code Online (Sandbox Code Playgroud)