我正在尝试分配多个变量以加载到管道中。我想提示用户输入值,然后将它们读入变量中。我当前的脚本是:
echo "How many galaxies are you analyzing?"
read n1
i=1
while [$i -lt $n1]; do
echo "Please list galaxy $i."
read gal${i}
echo "How many observations are there for gal${i}?"
read n2
while [$j -lt $n2]
echo "Please enter observation #$j for gal${i}."
read obs${j}
echo gal${i}
echo obs${j}
let j++
done
echo gal${i}
let i+1
done
我希望有一棵树,由
├── gal1
| ├── obs1
│ └── obs2
├── gal2
│ ├── obs1
│ ├── obs2
│ └──obs3
这些值是任意字母数字组合。
我运行上述循环时遇到的错误是:
user@user:~$ bash tst.tst
How many galaxies are you analyzing?
2
tst.ts: line 16: syntax error near unexpected token `done'
tst.ts: line 16: `done'
答案1
首先,缩进您的代码,以便更容易查看其逻辑结构(许多编辑器都会为您执行此操作,但如果必须,则值得手动执行):
#!/bin/bash
echo "How many galaxies are you analyzing?"
read n1
i=1
while [[ $i -lt $n1 ]]; do
echo "Please list galaxy $i."
read gal${i}
echo "How many observations are there for gal${i}?"
read n2
while [[ $j -lt $n2 ]] ; do
echo "Please enter observation #$j for gal${i}."
read obs${j}
echo gal${i}
echo obs${j}
let j++
done
echo gal${i}
let i+1
done
第二,第一行应该是“ #!/bin/bash
”。
第三,line后面while [$j -lt $n2]
需要一个。; do
第四,使用每次[
都会运行。使用内置命令(和)会更好。 /usr/bin/test
bash
[[
]]
“我希望有一棵树...”。这是一个 SMOP(简单编程问题),您必须按照需要的方式排列数据。但是,当、、等存在时,构建树bash
就变得非常困难。perl
python
ruby