我是bash的新手,我正在尝试编写一个脚本来执行以下操作。
我有一个文件:file.txt,看起来像
13, 243
我想让bash脚本读取两个整数并将它们存储为变量
我尝试了以下内容(请注意,fileName是一个包含文件名的字符串):
read -r line <$fileName
line=${line//,/}
for i in $line; do echo $i; done;
将读取该行,删除“,”然后打印出两个整数。但我不确定如何将这两个整数存储在两个不同的变量中。
提前感谢您的帮助。
答案 0 :(得分:0)
您可以使用cut
:
$ echo '13, 243' | cut -d, -f1
13
$ echo '13, 243' | cut -d, -f2
243
额外的空间通常不是问题,但如果你想摆脱它:
$ echo '13, 243' | cut -d, -f2 | tr -d ' '
243
在脚本中,您可以将其用作:
var1=$(echo "$line" | cut -d, -f1)
var2=$(echo "$line" | cut -d, -f2 | tr -d ' ')
答案 1 :(得分:0)
如果您只需要从输入中删除“,”,则可以使用sed快速轻松地执行此操作:
sed's /,// g'file
答案 2 :(得分:0)
#!/bin/bash
line=$(cat testfile | sed 's/ //g')
args=(${line//,/ })
x="${args[0]}"
y="${args[1]}"
echo $x # 13
echo $y # 243
答案 3 :(得分:0)
read file.txt REPLY
#Read into REPLY variable
var1="${REPLY#*, }"
#Strip off the pattern "*, " from string beginning, store in another var
var2="${REPLY%,*}"
#Strip off the pattern ",*" from string end, store in another var
注意:未经测试,但只需要轻微调整