我对bash很陌生,正在尝试编写一个脚本来执行以下操作。
我有一个文件:文件.txt看起来像
13, 243
我想让一个 bash 脚本读取两个整数并将它们存储为变量
我尝试了以下方法(请注意,文件名是包含文件名的字符串):
read -r line <$fileName
line=${line//,/}
for i in $line; do echo $i; done;
这将读取该行,删除",",然后打印出两个整数。 但是,我不确定如何将这两个整数实际存储在两个不同的变量中。
提前感谢您的帮助。
#!/bin/bash
line=$(cat testfile | sed 's/ //g')
args=(${line//,/ })
x="${args[0]}"
y="${args[1]}"
echo $x # 13
echo $y # 243
您可以使用
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 ' ')
如果您只需要从输入中删除 '",",您可以使用 sed 快速轻松地执行此操作:
sed 's/,//g' 文件
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
注意:未经测试,但只需要稍作调整