Bash脚本-变量连接
对Linux和Bash脚本完全陌生,我一直在尝试以下脚本:Bash脚本-变量连接,bash,shell,Bash,Shell,对Linux和Bash脚本完全陌生,我一直在尝试以下脚本: declare -a names=("Liam" "Noah" "Oliver" "William" "Elijah") declare -a surnames=("Smith" "Johnson" "Williams" "Brown" "Jones
declare -a names=("Liam" "Noah" "Oliver" "William" "Elijah")
declare -a surnames=("Smith" "Johnson" "Williams" "Brown" "Jones")
declare -a countries=()
readarray countries < $2
i=5
id=1
while [ $i -gt 0 ]
do
i=$(($i - 1))
rname=${names[$RANDOM % ${#names[@]}]}
rsurname=${surnames[$RANDOM % ${#surnames[@]}]}
rcountry=${countries[$RANDOM % ${#countries[@]}]}
rage=$(($RANDOM % 5))
record="$id $rname $rsurname $rcountry"
#record="$id $rname $rsurname $rcountry $rage"
echo $record
id=$(($id + 1))
done
但是当行record=“$id$rname$rsurname$rccountry”
得到注释时,问题就变得很明显了,并且行record=“$id$rname$rsurname$rccountry$rage”
处于活动状态,第二次执行时的确切输出是:
4William Johnson Albania
2Elijah Smith Albania
2Oliver Brown Argentina
0William Williams Argentina
3Oliver Brown Angola
我从中读取国家的文件如下所示:
Albania
Algeria
Andorra
Angola
Argentina
您能解释一下为什么会发生这种情况吗?您的国家/地区输入文件具有DOS样式的
(回车换行)行结尾
从文件中读取行时,countries
数组的每个元素最终看起来像somename
,打印时
将光标移回行的开头,因此$rage
的内容最终覆盖行的开头
修复方法是将您的国家/地区输入转换为使用Unix样式(
仅限)行结尾。例如,您可以使用dos2unix>
执行此操作。您的国家/地区输入文件具有DOS样式的
(回车换行符)行结尾
从文件中读取行时,countries
数组的每个元素最终看起来像somename
,打印时
将光标移回行的开头,因此$rage
的内容最终覆盖行的开头
修复方法是将您的国家/地区输入转换为使用Unix样式(
仅限)行结尾。例如,您可以使用dos2unix>
来执行此操作
Albania
Algeria
Andorra
Angola
Argentina